python - When calling a method polymorphically, bound method is displayed...
怪我咯
怪我咯 2017-06-12 09:25:43
0
1
884

class Programer(object):

hobby='play computer' def __init__(self,name,age,weight): self.name=name self._age=age self.__weight=weight def self_intro(self): print 'my name is %s \nI am %s years old\n' % (self.name, self._age)

class BackendProgramer(Programer):

def __init__(self,name,age,weight,language): super(BackendProgramer,self).__init__(name,age,weight) self.language = language def self_intro(self): print 'my name is %s \nmy favourite language is %s\n' % (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)

The running result is:
>
> ;

Excuse me why the running result is not my name is...

怪我咯
怪我咯

走同样的路,发现不同的人生

reply all (1)
伊谢尔伦

Because you forgot to call

def intro(f): if isinstance(f,Programer): print f.self_intro() # 没有()只是函数对象而已, 加了()才是调用
    Latest Downloads
    More>
    Web Effects
    Website Source Code
    Website Materials
    Front End Template
    About us Disclaimer Sitemap
    php.cn:Public welfare online PHP training,Help PHP learners grow quickly!