Sep-06-2017, 08:56 AM
Hi All,
I was trying to understand Inheritance concept in Python.
When I wrote the code without using super(), I was getting desired results. You can see that below
I am getting following error:
I was trying to understand Inheritance concept in Python.
When I wrote the code without using super(), I was getting desired results. You can see that below
class Base1(object): def __init__(self): self.name1 = "Peter" def showName1(self): print(self.name1) class Base2(object): def __init__(self): self.name2 = "John" def showName2(self): print(self.name2) class Child(Base2, Base1): def __init__(self): self.name3 = "Sagar" Base1.__init__(self) Base2.__init__(self) def showName3(self): print(self.name3) obj = Child() obj.showName1() obj.showName2() obj.showName3()
Output:Peter
John
Sagar
But when I wrote super() in place of writing class name in Child class's __init__() function,class Base1(object): def __init__(self): self.name1 = "Peter" def showName1(self): print(self.name1) class Base2(object): def __init__(self): self.name2 = "John" def showName2(self): print(self.name2) class Child(Base2, Base1): def __init__(self): self.name3 = "Sagar" super(Child,self).__init__() def showName3(self): print(self.name3) obj = Child() obj.showName1() obj.showName2() obj.showName3()
I am getting following error:
Error:Traceback (most recent call last):
File "D:\Sagar\Python Related\Scripts\MultipleInheritance.py", line 25, in <module>
obj.showName1()
File "D:\Sagar\Python Related\Scripts\MultipleInheritance.py", line 6, in showName1
print(self.name1)
AttributeError: 'Child' object has no attribute 'name1'
Is super() not used in case of Multiple Inheritance ?