I'd like to understand if multiple inheritance is allowed in Python 2.7 from a class whose parent is not an object ?
Ref:TypeError in Python single inheritance with "super" attribute do provide some examples but I'd like to use super(Subclass, self) differently as below
Animal --> Mammal --> CannoFly & CannotSwim --> Dog
So Dog class inherits from CannotFly and CannotSwim classes. Each of the CannotFly and CannotSwim class inherits from Mammal which inherit from Animal classes
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')
When I run it I get the error "TypeError: must be type, not classobj" which is because the CanotSwim() & CannotFly() classes are derived from Mammal which is not the base class but inheriting from Animal class. If that was not the case, then the Super(Subclass, self) works perfectly.