Python類中的魔法方法之 __slots__原理解析
更新時間:2019年08月26日 14:21:56 作者:JasonMingHao
這篇文章主要介紹了Python類中的魔法方法之 __slots__詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
在類中每次實例化一個對象都會生產(chǎn)一個字典來保存一個對象的所有的實例屬性,這樣非常的有用處,可以使我們?nèi)我獾娜ピO(shè)置新的屬性。
每次實例化一個對象python都會分配一個固定大小內(nèi)存的字典來保存屬性,如果對象很多的情況下會浪費內(nèi)存空間。
可通過__slots__方法告訴python不要使用字典,而且只給一個固定集合的屬性分配空間
class Foo(object): __slots__ = ("x","y","z") def __init__(self,x,y): self.x = x self.y = y self.z = None def tell_info(self,name): return getattr(self,name) c = Foo(10,20) # 設(shè)置和獲取__slots__中設(shè)置的可訪問實例屬性 print(c.tell_info("x")) # 結(jié)果:10 c.z=50 print(c.tell_info("z")) # 結(jié)果:50 # 設(shè)置一個不在__slots__中存在的屬性,會報錯 c.e = 70 # AttributeError: 'Foo' object has no attribute 'e' # 訪問對象.__dict__ 也會直接報錯 print(c.__dict__) # AttributeError: 'Foo' object has no attribute '__dict__'
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
pyspark連接mysql數(shù)據(jù)庫報錯的解決
本文主要介紹了pyspark連接mysql數(shù)據(jù)庫報錯的解決,因為spark中缺少連接MySQL的驅(qū)動程序,下面就來介紹一下解決方法,感興趣的可以了解一下2023-11-11Python的Pandas庫中使用DataFrame篩選和刪除含特定值的行與列
Pandas是一個強大的數(shù)據(jù)處理庫,提供了各種功能來操作和處理數(shù)據(jù),這篇文章主要給大家介紹了關(guān)于Python的Pandas庫中使用DataFrame篩選和刪除含特定值的行與列的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2024-05-05Python+Pygame實戰(zhàn)之炫舞小游戲的實現(xiàn)
提到QQ炫舞,可能很多人想到的第一個詞是“青春”。恍然間,這個承載了無數(shù)人回憶與時光的游戲品牌,已經(jīng)走到了第十幾個年頭。今天小編就來給大家嘗試做一款簡單的簡陋版的小游戲——《舞動青春*炫舞》,感興趣的可以了解一下2022-12-12