class Mammal(object):
def __init__(self, name):
print(name, "Is a mammal")
class canFly(Mammal):
def __init__(self, canFly_name):
print(canFly_name, "cannot fly")
super().__init__(canFly_name)
class canSwim(Mammal):
def __init__(self, canSwim_name):
print(canSwim_name, "cannot swim")
super().__init__(canSwim_name)
class canWagTail(Mammal):
def __init__(self, canWag_name):
print(canWag_name, "can wag tail")
super().__init__(canWag_name)
class Animal(canFly, canSwim, canWagTail):
def __init__(self, name):
super().__init__(name)
Carol = Animal("Dog")
我认为这个多重多级继承代码会返回以下内容(父类的第一个找到的构造函数,就像任何其他方法一样):
Dog cannot fly
Dog is a mammal
但是结果如下:
Dog cannot fly
Dog cannot swim
Dog can wag tail
Dog Is a mammal
有人可以解释一下构造函数调用是如何使用 super() 工作的吗?它会自动调用所有父构造函数吗?即使是这样,输出也应该是:
Dog cannot fly
Dog Is a mammal
Dog cannot swim
Dog Is a mammal
Dog can wag tail
Dog Is a mammal
但事实显然不是这样。有人可以解释一下吗?
如果你想使用特定的构造函数,你可以直接调用它:
class Animal(canFly, canSwim, canWagTail):
def __init__(self, name):
canFly().__init__(name)