簡體   English   中英

多個參數名稱相同的 inheritance

[英]Multiple inheritance with same parameter names

我嘗試使用多個 inheritance。 Tank既是Vehicle又是Weapon

class Weapon:
    def __init__(self, name, strength, *args, **kwargs):
        super().__init__(*args, **kwargs)


class Vehicle:
    def __init__(self, name, average_speed, *args, **kwargs):
        super().__init__(*args, **kwargs)


class Tank(Weapon, Vehicle):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)


Tank(name="Moshe", average_speed=68, weight=62.5, strength=17.7)

所以 Tank 的 MRO 是[__main__.Tank, __main__.Weapon, __main__.Vehicle, object]

不幸的是, WeaponVehicle都有name參數,所以目前會發生以下錯誤:

TypeError: __init__() missing 1 required positional argument: 'name'

是否有一種非人為的方式將其傳遞給所有超類?

我猜你打算name在任何一個構造函數中都意味着本質上相同的東西。 首先想到的是創建一個只使用一次的超類:

class Named:
    def __init__(self, name, *args, **kwargs):
        pass

class Weapon(Named):
    def __init__(self, strength, *args, **kwargs):
        super().__init__(*args, **kwargs)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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