MRO基本上是深度优先,从左到右。有关更多信息,请参见新型Python类中的方法解析顺序(MRO)。
你可以查看要检查的类的
__mro__属性,但是
FooMixin如果要首先执行“检查A”,则应该放在第一位。
class Ultimatebase(object): def dispatch(self, *args, **kwargs): print 'base dispatch'class FooMixin(object): def dispatch(self, *args, **kwargs): print 'perform check A' return super(FooMixin, self).dispatch(*args, **kwargs)class BarMixin(object): def dispatch(self, *args, **kwargs): print 'perform check B' return super(BarMixin, self).dispatch(*args, **kwargs)class FooBar(FooMixin, BarMixin, Ultimatebase): passFooBar().dispatch()
Prints:
perform check Aperform check Bbase dispatch
View必须是最后一个,这样它才能“捕获”任何未在任何mixin上进行的任何属性查找,而不会在这些mixin上隐藏任何方法。我不确定我是否理解你的问题的一部分-什么“为什么要添加”或“为什么最后添加”?



