![](/img/trans.png)
[英]Multiple Inheritance With Same Method Names but Different Arguments Creates TypeError
[英]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]
。
不幸的是, Weapon
和Vehicle
都有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.