[Tutor] Trouble understanding modifying parent class..

Guillaume Chereau charlie137 at gmail.com
Tue Apr 14 06:31:58 CEST 2009


On Tue, Apr 14, 2009 at 11:27 AM, Eric Dorsey <dorseye at gmail.com> wrote:
> Hi tutors, I am studying classes a bit, and am having trouble with this
> concept and would appreciate your help!
>
>
> class A:
>     def __init__(self, name, value=1):
>         self.name = name
>         self.value = value
>
> And now I want a subclass, one that overrides the value=1 and defaults to
> value=2, how do I code that? I'm understanding subclasses that have
> different methods that have different behavior, but I'm having trouble doing
> this.
>
> Do we have to call the __init__ of the parent somehow? Is it "replaced" or
> overridden in an __init__ method of the subclass?
>
> .. or stated simply:
> If you have class A: which has def __init__(self, name, value=1), how do you
> code a subclass B(A): that automatically starts with value=2?

Simply type :

class B(A):
    def __init__(self, name, value=2):
        super(B, self).__init__(name, value)
        # rest of the __init__ method

"super" will automatically call the __init__ method of the parent class (A)
You can also do like this, but it less clean :

class B(A):
    def __init__(self, name, value=2):
        A.__init__(self, name, value)
        # rest of the __init__ method

cheers,
Guillaume


More information about the Tutor mailing list