python - 多態(tài)調(diào)用方法時卻顯示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)
運行結(jié)果是:<bound method Programer.self_intro of <__main__.Programer object at 0x02505330>><bound method BackendProgramer.self_intro of <__main__.BackendProgramer object at 0x02505370>>
請問為什么運行結(jié)果不是my name is ...
問題解答
回答1:因為你忘記調(diào)用了
def intro(f): if isinstance(f,Programer):print f.self_intro() # 沒有()只是函數(shù)對象而已, 加了()才是調(diào)用
相關(guān)文章:
1. sql語句 - 如何在mysql中批量添加用戶?2. shell - Update query wrong in MySQL3. 怎么php怎么通過數(shù)組顯示sql查詢結(jié)果呢,查詢結(jié)果有多條,如圖。4. mysql - PHP定時通知、按時發(fā)布怎么做?5. php - 數(shù)據(jù)庫表如果是null怎么替換為其他字段的值6. 事務(wù) - mysql共享鎖lock in share mode的實際使用場景7. SQLAlchemy 訪問Mysql數(shù)據(jù)庫彈出Warning,VARIABLE_VALUE,如何解決?8. mysql - JAVA怎么實現(xiàn)一個DAO同時實現(xiàn)查詢兩個實體類的結(jié)果集9. mysql - 數(shù)據(jù)庫建字段,默認值空和empty string有什么區(qū)別 11010. mysql建表報錯,查手冊看不懂,求解?
