动态多重继承或混合



我正在努力了解如何在程序中实现多重继承或MixIns。

我的想法是,我有一个汽车类,它使用MixIns添加不同性能助推器的方法,如冷空气进气和增压器。所以下面这样的东西,尽管我知道这不起作用。

car1 = Car(Turbocharger, ColdAirIntake)
car2 = Car(Supercharger)
car3 = Car(Nitrous)

我找到了这个例子,但不确定这是否是实现我想法的正确方式。

在Python 中将基类动态混合到实例中

您可以通过动态定义汽车类来创建实例:

def make_car(*bases):
class dynamic_car(*bases, Car):
pass
return dynamic_car()
car1 = make_car(Turbocharger, ColdAirIntake)
car2 = make_car(Supercharger)
car3 = make_car(Nitrous)

不确定我是否完全理解你,但如果你只想理解你提到的内容,看看这个简单的例子:

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中的每一个都只是用作为参数传递给__call__的其他mixin来"更新"自己。这些类只是添加了一些语法糖。

最新更新