我尝试使用多重继承。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)所以坦克的 MRO 是[__main__.Tank, __main__.Weapon, __main__.Vehicle, object]。不幸的是,Weapon和Vehicle都有name参数,所以目前出现以下错误:TypeError: __init__() missing 1 required positional argument: 'name'有没有一种非人工的方法可以将它传递给所有超类?
1 回答

眼眸繁星
TA贡献1873条经验 获得超9个赞
我猜你打算name在两个构造函数中表示本质上相同的东西。首先想到的是制作一个只使用一次的超类:
class Named:
def __init__(self, name, *args, **kwargs):
pass
class Weapon(Named):
def __init__(self, strength, *args, **kwargs):
super().__init__(*args, **kwargs)
添加回答
举报
0/150
提交
取消