【发布时间】:2016-07-19 08:26:37
【问题描述】:
class Base(object):
def m(self):
print 'base'
class MixinA(Base):
def m(self):
super(MixinA, self).m()
print 'mixin a'
class MixinB(Base):
def m(self):
super(MixinB, self).m()
print 'mixin b'
class Top(MixinB, MixinA, Base):
def m(self):
super(Top, self).m()
print 'top'
t = Top()
t.m()
打印出来:
base
mixin a
mixin b
top
我对很多事情感到惊讶。 Top 的第一个 MRO 是 (<class 'Top'>, <class 'MixinB'>, <class 'MixinA'>, <class 'Base'>, <type 'object'>)
- 为什么
mixin a出现在mixin b之前? -
super是否尝试 MRO 中的每个类(与返回找到的第一个属性时搜索属性不同)?
【问题讨论】:
标签: python oop multiple-inheritance super