OOP新手Python多重继承实例化Child报TypeError,无法继承父类属性如何解决
问题原因
- Python 不支持类方法重载,你在
Child类中定义了两个__init__方法,后定义的会直接覆盖先定义的,最终Child的构造方法仅接受1个位置参数(除self外),传入2个参数(eyeColor、hairColor)自然触发参数数量不匹配的报错。 - 你没有在
Child的构造方法中同时完成两个父类的初始化逻辑,就算参数没问题,也只能继承到其中一个父类的属性。
修复方案
你只需要保留一个Child的构造方法,同时接收两个参数,分别调用两个父类的初始化方法即可,修复后代码如下:
class Mother : def __init__(self, eyeColor): self._eyeColor = eyeColor class Father : def __init__(self, hairColor): self._hairColor = hairColor class Child(Mother,Father): # 同时接收两个属性参数 def __init__(self, eyeColor, hairColor): # 分别初始化两个父类 Mother.__init__(self, eyeColor) Father.__init__(self, hairColor) Bucky = Child("red","black") print(Bucky._hairColor) # 输出 black print(Bucky._eyeColor) # 输出 red
拓展说明
如果后续你想使用super()方法完成多继承初始化,需要父类配合调整参数接收逻辑,避免参数传递冲突,你当前的入门场景直接显式调用两个父类的构造方法可读性更高,更易理解。
内容的提问来源于stack exchange,提问作者Zak ah
相关产品推荐
相关产品推荐

