Tim Cook wrote:
Say I have these classes:Child.__init__(self,a,b) # requires all three params.
class Parent(object):
"""Parent is abstract"""
a=None
def showA():
return self.a
class Child(Parent):
"""inherits a and showA from Parent"""
def __init__(self,a,b):
self.a=a
self.b=b
def showAB():
return self.a,self.b
class GrandChild(Child):
"""inherits all of the above"""
def __init__(self,a,b,c):
self.a=a
self.b=b
"""should this be Child.__init__(a,b)? or Child.__init__(b)?""
"""if so; why? if not why not?"""In this simple case, I would probably do what you did. But a reason to
call the baseclass init would be to not repeat yourself and keep the
derived class in sync. Suppose, for instance, Child.__init__ had
'self.frob = math.sin(a) + math.cos(b) - math.sqrt(a*a+b*b)', and then
you realize that the formula needs to be changed. Better to have it in
one place.
self.c=c
Thanks for answering these very basic questions but I am not certain
about the correct way. I know that in Python, assignment in the
GrandChild class will work but is that correct?