亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

還是沒弄明白這個函數要怎么用

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')?#?==>?用函數的方式調用Person類的實例p
My?name?is?Bob...
My?friend?is?Alice...


正在回答

2 回答

簡單來說

p('Alice')?是p.__call__('Alice')的縮寫。
3 回復 有任何疑惑可以回復我~

是說這個__call__類方法嗎

我的想法是:原本創建了Python中的一個類(還沒有創建這個類中的實例),然后再定義類的時候采用了__call__的類方法使整個類(中的實例對象)由。不可調動 ?變為 可調動 ?的模式,可以讓類中的實例對象可以直接調用函數

例:

class Words(object):

????def say():

????????print("Python語言Good")

say()

say.__call__()


兩則代碼的輸出都是:

"Python語言Good"

say() 是 say.__call__()的縮寫

采用__call__就是重新加載了函數()運算符

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

還是沒弄明白這個函數要怎么用

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號