Correct Attribute Assignment Methodology?
Terry Reedy
tjreedy at udel.edu
Wed Jul 30 12:22:56 EDT 2008
Tim Cook wrote:
> Say I have these classes:
>
> 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)?""
Child.__init__(self,a,b) # requires all three params.
> """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?
More information about the Python-list
mailing list