<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ## 問題 你的程序要創建大量(可能上百萬)的對象,導致占用很大的內存。 ## 解決方案 對于主要是用來當成簡單的數據結構的類而言,你可以通過給類添加 `__slots__` 屬性來極大的減少實例所占的內存。比如: class Date: __slots__ = ['year', 'month', 'day'] def __init__(self, year, month, day): self.year = year self.month = month self.day = day 當你定義 `__slots__` 后,Python就會為實例使用一種更加緊湊的內部表示。實例通過一個很小的固定大小的數組來構建,而不是為每個實例定義一個字典,這跟元組或列表很類似。在 `__slots__` 中列出的屬性名在內部被映射到這個數組的指定小標上。使用slots一個不好的地方就是我們不能再給實例添加新的屬性了,只能使用在 `__slots__` 中定義的那些屬性名。 ## 討論 使用slots后節省的內存會跟存儲屬性的數量和類型有關。不過,一般來講,使用到的內存總量和將數據存儲在一個元組中差不多。為了給你一個直觀認識,假設你不使用slots直接存儲一個Date實例,在64位的Python上面要占用428字節,而如果使用了slots,內存占用下降到156字節。如果程序中需要同時創建大量的日期實例,那么這個就能極大的減小內存使用量了。 盡管slots看上去是一個很有用的特性,很多時候你還是得減少對它的使用沖動。Python的很多特性都依賴于普通的基于字典的實現。另外,定義了slots后的類不再支持一些普通類特性了,比如多繼承。大多數情況下,你應該只在那些經常被使用到的用作數據結構的類上定義slots(比如在程序中需要創建某個類的幾百萬個實例對象)。 關于 `__slots__` 的一個常見誤區是它可以作為一個封裝工具來防止用戶給實例增加新的屬性。盡管使用slots可以達到這樣的目的,但是這個并不是它的初衷。`__slots__` 更多的是用來作為一個內存優化工具。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看