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

多继承执行顺序问题

class Person(object):

def __init__(this):

       print "init Person..."


class Student(Person):

def __init__(this):

super(Student,this).__init__()

print "init Student..."

def Sdent(this):

print "i am a student..."

class Teacher(Person):

def __init__(this):

super(Teacher,this).__init__()

print "init Teacher..."

def Tcher(this):

print "i am a tercher..."

class SkillMixin(object):

def __init__(this):

print "init SkillMixin..."


class BasketballMixin(SkillMixin):

def __init__(this):

super(BasketballMixin,this).__init__()

print "init BasketballMixin..."

def skill(self):

return 'basketball'


class FootballMixin(SkillMixin):

def __init__(this):

super(FootballMixin,this).__init__()

print "init FootballMixin..."

def skill(self):

return 'football'


class BStudent(Student,BasketballMixin):

def __init__(this):

super(BStudent,this).__init__()

print "Bstudent..."

class FTeacher(Teacher,FootballMixin):

def __init__(this):

super(FTeacher,this).__init__()

print "FTeacher...."


s = BStudent()

#print s.Sdent

#print s.skill()


t = FTeacher()

#print t.skill()

#print t.Tcher()


输出结果:

init Person...

init Student...

Bstudent...

init Person...

init Teacher...

FTeacher....

和这个兄弟的不同:http://blog.csdn.net/caiknife/article/details/8579851


请大家帮我分析一波!!谢谢

正在回答

2 回答

你应该在Person的init方法中加入super(Person,self).__init__(), 在SkillMixin的__init__()加入super(SkillMixin,self).__init__(),否则的话就打破了他们的继承链了

class Person(object):


    def __init__(self):

        super(Person,self).__init__()

        print("init Person...")

class SkillMixin(object):

        def __init__(self):

        super(SkillMixin,self).__init__()

        print( "init SkillMixin...")


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

余先生2 提问者

非常感谢!解决了
2018-02-17 回复 有任何疑惑可以回复我~

self 还能用this 代替吗?

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

举报

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

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

进入课程

多继承执行顺序问题

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