为了账号安全,请及时绑定邮箱和手机立即绑定

如果子类是多重继承的话,两个父类都有一个同名方法,子类调用了那会怎样?

如果子类是多重继承的话,两个父类都有一个同名方法,子类调用了那会怎样?到底调用哪个

正在回答

4 回答

多继承的父类有同名方法时,子类只继承第一个出现的方法,从左至右查找,即与继承父类的顺序有关。比如上一节的多继承:class FTeacher(FootballMixin, Teacher),父类为FootballMixin和Teacher,它们都有名为like()的方法,FootballMixin在多继承的前面,子类继承了它的like()方法;如果多继承为class FTeacher(Teacher,FootballMixin),则子类继承Teacher的like()方法。

0 回复 有任何疑惑可以回复我~
#1

今天是晴天 提问者

非常感谢!
2016-07-21 回复 有任何疑惑可以回复我~
#2

慕侠0039860

继承按照广度优先的方法不是应该为右边的这个吗?
2018-07-07 回复 有任何疑惑可以回复我~

谁能告诉我图片中的none是咋回事么https://img1.sycdn.imooc.com//5c83b99100019f2203350154.jpg

0 回复 有任何疑惑可以回复我~
class Person(object):    
    def WhoFirst(selt):        
         print 'Person first'
         
class Student(Person):   
    pass
    
class Teacher(Person):    
    pass
    
class SkillMixin(object):  
   def WhoFirst(selt):        
       print 'SkillMixin first'
       
class BasketballMixin(SkillMixin):    
   def skill(self):        
      return 'basketball'
      
class FootballMixin(SkillMixin):   
    def skill(self):        
       return 'football'
       
class BStudent(BasketballMixin,Student):    
    pass
    
class FTeacher(FootballMixin,Teacher):  
      pass
      
s = BStudent()
print s.skill()
print s.WhoFirst()
t = FTeacher()
print t.skill()
print t.WhoFirst()


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

测试了一下,的确就是从左往右查找,网上看的说按广度优先,这里不知道到底咋回事

class Person(object):    def WhoFirst(selt):        print 'Person first'class Student(Person):    passclass Teacher(Person):    passclass SkillMixin(object):    def WhoFirst(selt):        print 'SkillMixin first'class BasketballMixin(SkillMixin):    def skill(self):        return 'basketball'class FootballMixin(SkillMixin):    def skill(self):        return 'football'class BStudent(BasketballMixin,Student):    passclass FTeacher(FootballMixin,Teacher):    passs = BStudent()print s.skill()print s.WhoFirst()t = FTeacher()print t.skill()print t.WhoFirst()

https://img1.sycdn.imooc.com//5c83b7d600019f2203350154.jpg

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

举报

0/150
提交
取消
python进阶
  • 参与学习       255665    人
  • 解答问题       2949    个

学习函数式、模块和面向对象编程,掌握Python高级程序设计

进入课程

如果子类是多重继承的话,两个父类都有一个同名方法,子类调用了那会怎样?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信