python __slots__節省內存佔用

  • 2019 年 12 月 12 日
  • 筆記

對於主要是用來當成簡單的數據結構的類而言,你可以通過給類添加 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 中定義的那些屬性名。