Say I want to create a class with two parent classes as follows:
class A:
def __init__(self, a) -> None:
self.a = a
class B:
def __init__(self, b) -> None:
self.b = b
class C(A, B):
def __init__(self, a, b, c) -> None:
super().__init__(a)
super().__init__(b)
self.c = c
Now, how do I make sure a goes to A and b goes to B because if I try to run this:
c = C(1, 2, 3)
print(c.a, c.b, c.c, sep='\n')
It yells AttributeError: 'C' object has no attribute 'b'.
Do I always have to create a sub-class with multiple parents like below?
class C(A, B):
def __init__(self, a, b, c) -> None:
A.__init__(self, a)
B.__init__(self, b)
self.c = c
If so, then what is the use of super?
I've also noticed that if there are no arguments, calling C() will also call __init__ from the first parent i.e. A without doing any super or A.__init__(). But how do I call B here? Again I'm unable to understand the use of super.
It might be an ambiguous question but I'm really finding hard to get answers here. Thanks in advance for any help.