[英]Dynamic multiple inheritance or mixins
我試圖了解如何在我的程序中實現多個 inheritance 或 MixIns。
我的想法是,我有一輛汽車 class,它使用 MixIns 添加來自冷空氣進氣和增壓器等不同性能助推器的方法。 所以像下面這樣的東西雖然我知道這不起作用。
car1 = Car(Turbocharger, ColdAirIntake)
car2 = Car(Supercharger)
car3 = Car(Nitrous)
我找到了這個例子,但不確定這是否是做我所想的正確方法。
您可以通過動態定義您的汽車 class 來創建實例:
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 中的每一個都只是用其他 mixin 來“更新”自己,這些 mixin 作為 arguments 傳遞給__call__
。 這些類只是添加了一些語法糖。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.