方法名 | 類型- | 做用 |
---|---|---|
__init__ |
方法 | 類實例化時自動調用這個函數 |
__del__ |
方法 | 對象被內存中銷燬前,會被自動調用 |
__str__ |
方法 | 類的實例打印時調用這個函數(返回)用戶看到的 |
__repr__ |
方法 | 和上面的str函數同樣,只是這個時返回開發者看到的 |
__ getattr __ |
方法 | 當調用不存在的屬性時訪問這個方法 |
__call__ |
方法 | 若是類實現了這個方法,至關於把這個類型的對象看成函數來使用,至關於 重載了括號運算符 |
具體參考Python3標準庫html
類名()
開始建立,生命週期開始__del__
方法一旦被調用,生命週期結束例如:python
class Cat:
def __init__(self, name):
self.name = name
print('他來了 他來了')
def __del__(self):
print('他走了 他走了')
# Tom 是一個全局變量
tom = Cat('Tom')
print(tom.name)
print('-' * 50)
複製代碼
執行以下bash
他來了 他來了
Tom
--------------------------------------------------
他走了 他走了
複製代碼
如今 咱們調用 del 刪除 tom
函數
-- omit --
# Tom 是一個全局變量
tom = Cat('Tom')
print(tom.name)
del tom
print('-' * 50)
複製代碼
他來了 他來了
Tom
他走了 他走了
--------------------------------------------------
複製代碼
上面的表格以及描述的差很少了,貼一段代碼來例舉spa
class Cat:
# 類實例化時自動調用這個函數
def __init__(self, name):
self.name = name
print('%s他來了 他來了' % self.name)
# 對象被內存中銷燬前,會被自動調用
def __del__(self):
print('他走了 他走了')
# 類的實例打印時調用這個函數(返回)用戶看到的
def __str__(self):
return '我是Cat的類'
# 和上面的str函數同樣,只是這個時返回開發者看到的
def __repr__(self):
return '__repr__'
# 當調用不存在的屬性時訪問這個方法
def __getattr__(self, item):
item = 'A'
print('屬性不存在,默認爲 %s' % item)
# 若是類實現了這個方法,至關於把這個類型的對象看成函數來使用,至關於 重載了括號運算符
def __call__(self, *args, **kwargs):
print('我是 %s 經過__call__轉函數實例化的' % args)
# Tom 是一個全局變量
tom = Cat('Tom')
print(tom.name)
# del tom
print('-' * 50)
print(tom)
tom.sex
print('*' * 50)
tom('Tim')
複製代碼
懶的同窗 看下面 執行結果code
Tom他來了 他來了
Tom
--------------------------------------------------
我是Cat的類
屬性不存在,默認爲 A
**************************************************
我是 Tim 經過__call__轉函數實例化的
他走了 他走了
複製代碼
__call__
若是沒有定義的話 就 tom('Tim')
就用實例直接調用類的話會保持喲~htm