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. css3 - 微信前端页面遇到的transition过渡动画的bug2. 网页爬虫 - 关于Python的编码与解码问题3. css - 文字排版问题,内容都是动态抓出来的,字数不一定。如何对齐啊4. javascript - router.push无效5. javascript - 为什么var obj = {}创建对象的方法里面不能用this.xxx来声明属性 ?6. css3 - 微信小程序如何把radio改成2个选择按钮的样式7. selenium-selenium-webdriver - python 将当前目录加入到 环境变量8. css - input间的间距和文字上下居中9. 为什么javascript 18014398501093363 == 18014398501093364 返回ture10. javascript - 浏览器回退,如何保证js对dom的操作保存下来

网公网安备