python - 多態調用方法時卻顯示bound method...
問題描述
class Programer(object):
hobby=’play computer’def __init__(self,name,age,weight): self.name=name self._age=age self.__weight=weightdef self_intro(self): print ’my name is %s nI am %s years oldn’ % (self.name, self._age)
class BackendProgramer(Programer):
def __init__(self,name,age,weight,language): super(BackendProgramer,self).__init__(name,age,weight) self.language = languagedef self_intro(self): print ’my name is %s nmy favourite language is %sn’ % (self.name, self.language)
def intro(f):
if isinstance(f,Programer): print f.self_intro
if __name__==’__main__’:
prog = Programer(’Albert’,25,’80’)back_prog = BackendProgramer(’Alex’,23,’80’,’Ruby’)intro(prog)intro(back_prog)
運行結果是:<bound method Programer.self_intro of <__main__.Programer object at 0x02505330>><bound method BackendProgramer.self_intro of <__main__.BackendProgramer object at 0x02505370>>
請問為什么運行結果不是my name is ...
問題解答
回答1:因為你忘記調用了
def intro(f): if isinstance(f,Programer):print f.self_intro() # 沒有()只是函數對象而已, 加了()才是調用
相關文章:
1. mysql - 請問數據庫字段為年月日,傳進的參數為月,怎么查詢那個月所對應的數據2. node.js - win 下 npm install 遇到了如下錯誤 會導致 無法 run dev么?3. javascript - 我的站點貌似被別人克隆了, google 搜索特定文章,除了域名不一樣,其他的都一樣,如何解決?4. 求救一下,用新版的phpstudy,數據庫過段時間會消失是什么情況?5. [python2]local variable referenced before assignment問題6. Python2中code.co_kwonlyargcount的等效寫法7. html - 移動端radio無法選中8. php - 微信開發驗證服務器有效性9. javascript - vue+iview upload傳參失敗 跨域問題后臺已經解決 仍然報403,這是怎么回事啊?10. mysql - 如何在有自增id的情況下,讓其他某些字段能不重復插入
