還是沒弄明白這個函數(shù)要怎么用
class?Person(object):
????def?__init__(self,?name,?gender):
????????self.name?=?name
????????self.gender?=?gender
????def?__call__(self,?friend):
????????print('My?name?is?{}...'.format(self.name))
????????print('My?friend?is?{}...'.format(friend))
>>>?p?=?Person('Bob',?'Male')>>>?p('Alice')?#?==>?用函數(shù)的方式調用Person類的實例p
My?name?is?Bob...
My?friend?is?Alice...
2021-11-23
簡單來說
p('Alice')?是p.__call__('Alice')的縮寫。2021-08-19
是說這個__call__類方法嗎
我的想法是:原本創(chuàng)建了Python中的一個類(還沒有創(chuàng)建這個類中的實例),然后再定義類的時候采用了__call__的類方法使整個類(中的實例對象)由。不可調動 ?變?yōu)?可調動 ?的模式,可以讓類中的實例對象可以直接調用函數(shù)
例:
class Words(object):
????def say():
????????print("Python語言Good")
say()
say.__call__()
兩則代碼的輸出都是:
"Python語言Good"
say() 是 say.__call__()的縮寫
采用__call__就是重新加載了函數(shù)()運算符