class Base1:
def __init__(self,a):
self.a=a
def addition(self):
return self.a + self.a
class Base2:
def __init__(self,b):
self.b=b
def multipl(self):
return self.b*self.b
class Sub(Base1,Base2):
def __init__(self,a,b):
super().__init__(a,b)
H=Sub(4,5)
print(H.addition())
print(H.multipl())
TypeError: init () takes 2 positional arguments but 3 were given
Well, when I do it like this, what I expected happens, why? What does "* args" do to avoid that error?
class Base1:
def __init__(self,a,*args):
super().__init__(*args)
self.a=a
def addition(self):
return self.a + self.a
class Base2:
def __init__(self,b,*args):
super().__init__(*args)
self.b=b
def multipl(self):
return self.b*self.b
class Sub(Base1,Base2):
def __init__(self,a,b):
super().__init__(a,b)
H=Sub(4,5)
print(H.addition())
print(H.multipl())