为了账号安全,请及时绑定邮箱和手机立即绑定

具有相同参数名称的多重继承

具有相同参数名称的多重继承

温温酱 2023-02-07 13:40:27
我尝试使用多重继承。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)


查看完整回答
反对 回复 2023-02-07
  • 1 回答
  • 0 关注
  • 115 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号