Python 动态多重继承或混合
我试图理解如何在我的程序中实现多重继承或混合 我的想法是,我有一个汽车类,使用mixin添加不同性能的助推器,如冷空气进气和增压器的方法。虽然我知道这不起作用,但还是像下面这样Python 动态多重继承或混合,python,oop,multiple-inheritance,mixins,Python,Oop,Multiple Inheritance,Mixins,我试图理解如何在我的程序中实现多重继承或混合 我的想法是,我有一个汽车类,使用mixin添加不同性能的助推器,如冷空气进气和增压器的方法。虽然我知道这不起作用,但还是像下面这样 car1 = Car(Turbocharger, ColdAirIntake) car2 = Car(Supercharger) car3 = Car(Nitrous) 我找到了这个例子,但不确定这是否是我所想的正确方法 您可以通过动态定义汽车类别来创建实例: def make_car(*base): 动态车辆等级(*
car1 = Car(Turbocharger, ColdAirIntake)
car2 = Car(Supercharger)
car3 = Car(Nitrous)
我找到了这个例子,但不确定这是否是我所想的正确方法
您可以通过动态定义汽车类别来创建实例:
def make_car(*base):
动态车辆等级(*底座,车辆):
通过
返回动力车()
car1=制造车辆(涡轮增压器、Coldairinkake)
car2=制造汽车(增压器)
car3=制造汽车(硝基)
我不确定我是否完全理解您,但如果您只想理解您提到的内容,请看以下简单示例:
class Turbocharger(dict):
# Define any class attributes.
def __init__(self):
# Define any instance attributes here.
super().__init__()
def __call__(self, *others):
for other in others:
# You'd want to check if it's a mixin, isinstance()?
self.update(other)
class Supercharger(dict):
# Same stuff here.
基本上,这些mixin中的每一个都只是使用作为
\uuu调用的参数传递的其他mixin来“更新”自己。这些类只是增加了一些语法上的糖分。现在,当我在回答问题后再次阅读这个问题时,我对你预期的行为更加困惑。这可能太离谱了,但如果对任何人都有帮助的话,我会把它放在这里。我自己从来没有遇到过这样的情况,但我可能很少看到:d.与其子类化,不如将各种组件类型的实例列表传递给Car.\uuu init\uuuu
,例如car1=Car(涡轮增压器(),ColdAirIntake())
。如果不知道所有类是如何定义的,以及它们是如何组合在一起的,很难说。