還是沒(méi)弄明白這個(gè)函數(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ù)的方式調(diào)用Person類的實(shí)例p My?name?is?Bob... My?friend?is?Alice...
2021-11-23
簡(jiǎn)單來(lái)說(shuō)
2021-08-19
是說(shuō)這個(gè)__call__類方法嗎
我的想法是:原本創(chuàng)建了Python中的一個(gè)類(還沒(méi)有創(chuàng)建這個(gè)類中的實(shí)例),然后再定義類的時(shí)候采用了__call__的類方法使整個(gè)類(中的實(shí)例對(duì)象)由。不可調(diào)動(dòng) ?變?yōu)?可調(diào)動(dòng) ?的模式,可以讓類中的實(shí)例對(duì)象可以直接調(diào)用函數(shù)
例:
class Words(object):
????def say():
????????print("Python語(yǔ)言Good")
say()
say.__call__()
兩則代碼的輸出都是:
"Python語(yǔ)言Good"
say() 是 say.__call__()的縮寫(xiě)
采用__call__就是重新加載了函數(shù)()運(yùn)算符