簡體   English   中英

動態多個 inheritance 或 mixins

[英]Dynamic multiple inheritance or mixins

我試圖了解如何在我的程序中實現多個 inheritance 或 MixIns。

我的想法是,我有一輛汽車 class,它使用 MixIns 添加來自冷空氣進氣和增壓器等不同性能助推器的方法。 所以像下面這樣的東西雖然我知道這不起作用。

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

我找到了這個例子,但不確定這是否是做我所想的正確方法。

將基礎 class 動態混合到 Python 中的實例

您可以通過動態定義您的汽車 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM