Cedric BRINER wrote:
>>>However, is it possible to achieve this without rewrite the whole
>>>__init__ method, but just overriding parts of it?
>>
>>The usual way to do this is to forward to the __init__() method of the 
>>superclass for the common part. In your case you are just specializing the 
>>default arguments so all you have to do is pass the args to A.__init__():
>>
>>class B(A):
>>  def __init__(self, blank=True, editable=True, name='foo'):
>>    A.__init__(self, blank, editable, name)
>>
> 
> 
> I thought such kind of thing should be writted like:
> class A(object):
>      def __init__(self, blank=False, editable=True, name='foo'):
>              self.blank = blank
>              self.editable = editable
>              self.name = name
> 
> class B(A):
>   def __init__(self, blank=True, editable=True, name='foo'):
>     super(B, self).__init__(blank, editable, name)

Yes, that is the more modern way to do it for new-style classes. In the 
original example, class A does not inherit from object so I used the older 
style.

Kent

_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to