Я хотел бы понять, разрешено ли множественное наследование в Python 2.7 от класса, родительский элемент которого не является объектом?
Ref: TypeError в Python одиночное наследование с атрибутом «super» приведу несколько примеров, но я бы хотел использовать super (Subclass, self) иначе, как показано ниже
Animal -> Mammal -> CannoFly & CannotSwim -> Dog
Итак, класс Dog наследуется от классов CannotFly и CannotSwim. Каждый из классов CannotFly и CannotSwim наследуется от Mammal, который наследуется от классов Animal
class Animal:
def __init__(self, animalName):
print(animalName, 'is an animal.');
# Mammal inherits Animal
class Mammal(Animal):
def __init__(self, mammalName):
print(mammalName, 'is a mammal.')
super(Mammal,self).__init__(mammalName)
# CannotFly inherits Mammal
class CannotFly(Mammal):
def __init__(self, mammalThatCantFly):
print(mammalThatCantFly, "cannot fly.")
super(CannotFly,self).__init__(mammalThatCantFly)
# CannotSwim inherits Mammal
class CannotSwim(Mammal):
def __init__(self, mammalThatCantSwim):
print(mammalThatCantSwim, "cannot swim.")
super(CannotSwim,self).__init__(mammalThatCantSwim)
# Dog inherits CannotSwim and CannotFly
class Dog(CannotSwim, CannotFly):
def __init__(self,arg):
print("I am a barking dog")
super(Dog, self).__init__(arg)
# Driver code
Dog1 = Dog('Bark')
Когда я запускаю его, я получаю сообщение об ошибке «TypeError: должно быть типом, а не classobj», потому что CanotSwim () & Классы CannotFly () являются производными от Mammal, который не является базовым классом, но наследуется от класса Animal. Если это не так, то Super (Subclass, self) работает отлично.