1. __call__
當執行物件名+括號時, 會自動執行類中的"__call__"方法, 怎麼用?
class a:def __init__(self, name):
self.name = name
def __call__(self, *args, **kwargs):
print(123)
obj = a('wangjianwei')
obj() # 當執行 object() 時,會自動執行類中的"__call__"方法
# 結果: 123
例項(物件)分為可呼叫和不可呼叫, 怎麼區分呢?
單純的類, 單純的物件
class a:def __init__(self, name):
self.name = name
# def __call__(self, *args, **kwargs):
# print(123)
obj = a('wangjianwei')
# obj()
print(callable(obj)) # 判斷給物件是都可被執行
# 結果: false
擁有__call__方法的類
class a:def __init__(self, name):
self.name = name
def __call__(self, *args, **kwargs):
print(123)
obj = a('wangjianwei')
obj()
print(callable(obj)) # 判斷給物件是都可被執行
# 結果: true
所以, 當乙個類中有"__call__"方法是, 那麼這個類產生的物件就是乙個可呼叫物件
例項一
class cal:def __call__(self, a, b):
return a * b
obj = cal()
print(obj(10,20)) #直接使用物件呼叫__call__, 並執行裡面的**塊
# 結果:200
例項二
class a:def __call__(self, *args, **kwargs):
print(args)
# 結果: ('123',)
class b:
def __init__(self):
self.obj = a()
self.obj('123')
objb = b()
python 特殊方法之 call
call 在python中,函式其實是乙個物件 f abs f.name abs f 123 123由於 f 可以被呼叫,所以,f 被稱為可呼叫物件。所有的函式都是可呼叫物件。乙個類例項也可以變成乙個可呼叫物件,只需要實現乙個特殊方法 call 我們把 person 類變成乙個可呼叫物件 class...
特殊的類方法
hasattr self,item 點號攔截運算,注 這是乙個繫結物件方法 在乙個類中,如果類裡定義了該方法 大多數內建類是沒有的 則這個類生成的物件加點呼叫屬性或方法時,如果呼叫的名字不存在,不會報錯,會執行 hasattr 這個方法。class person object def init se...
PYTHON類的特殊方法
例項1 python view plain copy coding utf 8 class firstdemo object 這裡是乙個doc a 10 類屬性 def demo self 第乙個方法 pass def demo2 self 第二個方法 pass print firstdemo.di...