__del__: 被稱為析構函數 當刪除一個對象時,python解釋器會預設調用__del__()方法 import gc class Dog(object): def __init__(self,name): self.name=name def __del__(self): print("刪除成... ...
__del__:
- 被稱為析構函數
- 當刪除一個對象時,python解釋器會預設調用__del__()方法
import gc class Dog(object): def __init__(self,name): self.name=name def __del__(self): print("刪除成功") def wang(self): print("汪汪汪") d1=Dog("小黑") d1.wang() # d1=None # del d1 #以上兩種都可以刪除,或者程式結束也會釋放記憶體 # d1.wang()#刪除後這裡會報錯
__doc__ :
- 類的文檔字元串
class Dog: """這是這個類的說明 """ def __init__(self,name): self.name=name d1=Dog("奧巴馬")##創建對象,傳入__init__所需的變數,self預設自動傳入 print(Dog.__doc__) -------------------------- 結果: 這是這個類的說明
__dict__ :
- 類的屬性,包含類的相關變數和方法
class Dog: #self 代表的是類的實例,代表當前對象的地址 def __init__(self,name):##稱為類的構造函數,進行初始化成員變數 self.name=name def bulk(self):###自定義函數 print("%s:汪汪!"%self.name) d1=Dog("奧巴馬")##創建對象,傳入__init__所需的變數,self預設自動傳入 print(Dog.__dict__)###類相關的變數,函數 print(d1.__dict__)##只有自身的實例變數 ----------------------------------------- {'__module__': '__main__', '__init__': <function Dog.__init__ at 0x000002B6950FC9D8>, 'bulk': <function Dog.bulk at 0x000002B6950FCA60>, '__dict__': <attribute '__dict__' of 'Dog' objects>, '__weakref__': <attribute '__weakref__' of 'Dog' objects>, '__doc__': None} {'name': '奧巴馬'}
__module__:
- 類定義所在的模塊:源文件中會顯示__main__,導入為模塊時為類定義所在的模塊
__getitem__:
- 凡是在類中定義了這個__getitem__ 方法,那麼它的實例對象(假定為p),可以像這樣 p[key] 取值,當實例對象做p[key] 運算時,會調用類中的方法__getitem__。
__setitem__:
- 使對象可以使用obj[key]=value來調用__setitem__進行操作
__delitem__:
- 使對象可以使用del obj[key]來刪除屬性
class A(object): def __getitem__(self, key): print('__getitem__', key) def __setitem__(self, key, value): self.value=value print('__setitem__', key, value) def __delitem__(self, key): print('__delitem__', key) obj = A() result = obj['k1'] # 觸發__getitem__ obj['k2'] = 'neo' # 觸發__setitem__ print(obj.value) #設置的可以獲取 del obj['k1'] #觸發__delitem__
__str__:
- 直接調用對象時,顯示的字元串
class Dog(object): def __init__(self,name): self.name=name def __str__(self): return self.name d=Dog("apple") print(d)
class Dog(object): def __init__(self,name): self.name=name def __str__(self): return "這是一個?" d=Dog("apple") print(d)
__call__:
- 一個類實例也可以變成一個可調用對象,只需要實現一個特殊方法__call__()。
class call_test(object): def __call__(self, *args, **kwargs): print("hello ",args,kwargs) c=call_test() c()