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?

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to