Python 如何在这种复杂的多重继承情况下使用super()?
我正在编写一个库,该库为两个现有基类中的每个基类提供额外的功能 这里不是用文字来解释排列,而是一张图表: 和最小代码:Python 如何在这种复杂的多重继承情况下使用super()?,python,python-3.x,multiple-inheritance,python-3.3,Python,Python 3.x,Multiple Inheritance,Python 3.3,我正在编写一个库,该库为两个现有基类中的每个基类提供额外的功能 这里不是用文字来解释排列,而是一张图表: 和最小代码: classbase0: 通过 类Base1(Base0): 定义初始化(self,*args,**kwargs): super() self.foo=something() Base2类(Base0): 通过 类Mixin: def ____;初始(自,条形): self.bar=bar #更多代码 类别Child1(基本1,混合): 定义初始化(self,*args,**k
classbase0:
通过
类Base1(Base0):
定义初始化(self,*args,**kwargs):
super()
self.foo=something()
Base2类(Base0):
通过
类Mixin:
def ____;初始(自,条形):
self.bar=bar
#更多代码
类别Child1(基本1,混合):
定义初始化(self,*args,**kwargs):
Base1.\uuuuu初始化(self,*args,**kwargs)
Mixin.\uuuu初始化(self,self.foo的某些函数)
儿童2类(基本2,混合):
定义初始化(self,*args,**kwargs):
Base2.\uuuuuuuuuuuuuu初始值(self,*args,**kwargs)
Mixin.\uuuu init\uuuuuuu(self,something\u other())
Base
类不在我的控制范围之内。我编写了Mixin
和Child
类。我的库的用户将对子类
类进行子类化,因此继承是合理和正确的是非常重要的
我想做的是在Child
类中使用super()。这是非常重要的原因,因为在Child1
中,只有在运行Base1
初始值设定项之后才能确定传递给Mixin
初始值设定项的值
设置这个的最简单/最合理的方法是什么?我认为您拥有的是Childx
类实现其\uuuuu init\uuuuu()
方法的唯一方法。这听起来有点像Mixin
的功能不应该用Mixin实现。如果您真的希望它是一个mixin,那么最好将该初始化放在\uuu init\uuuu
方法之外的某个地方-您不希望它中断超级链。@user2357112supportsMonica如何实现它?对于“将该初始化放在其他地方”方法,只是子类\uuu init\uuu
调用的另一个名称不同的方法。可以称之为set\u bar
或\u mixin\u init
或其他什么。对于“非mixin”方法,它取决于此mixin的实际功能。