python-2.7 - python 多个mixin和__init__方法

  显示原文与译文双语对照的内容

假设我有一个基类( MyBase ),它有一个 __init__ 方法

我还有 2个 mixin 。 每个lsn都有一个属性,但是两个方法中的两个方法或者属性都不是共同的。

MyBaseClass,Mixin1和mixin2都从对象继承

我想从 mixin ( Mixin1和 mixin2 ) 和MyBase派生一个类( MyRealClass ) 。

从我在MRO上看到的,MyRealClass的正确定义是


class MyRealClass(mixin1, mixin2, MyBase):



MyRealClass具有do_init方法( 当初始化类的某些部分时,我想控制它,但MyBase有一个 __init__ 方法。

我的问题是,在mixin中,在它们中应该有 __init__ 方法?

你能解释为什么他们应该? 我不需要在init中为我的类做任何工作。

谢谢

时间: 原作者:

__init__ 对象被创建时,它们会自动在 MyRealClass 对象上调用。 然后,根据MRO对函数调用进行处理: 首先,如果 MyRealClass 定义了 __init__,则它将被调用,否则解释器将在父类中搜索 __init__: Mixin1Mixin2,最后,在 MyBase 中。 这意味着 MyRealClass 不需要任何 __init__ 方法。

如果在某一点上选择 implemet MyRealClass.__init__,请确保调用 super(MyRealClass, self).__init__() 或者你将隐藏 MyBase 构造函数。

原作者:
...