refering to base classes

Jason tenax.raccoon at gmail.com
Tue Aug 29 12:27:02 EDT 2006


Chaz Ginger wrote:
> Chaz Ginger wrote:
> > glenn wrote:
> >> hi - Im quite new to python, wondering if anyone can help me understand
> >> something about inheritance here. In this trivial example, how could I
> >> modify the voice method of 'dog' to  call the base class 'creatures'
> >> voice method from with in it?
> >>
> >> class creature:
> >>     def __init__(self):
> >>         self.noise=""
> >>     def voice(self):
> >>         return "voice:" + self.noise
> >>
> >> class dog(creature):
> >>     def __init__(self):
> >>         self.noise="bark"
> >>
> >>     def voice(self):
> >>             print "brace your self:"
>
> I did forget to mention that in 'dog"s' __init__ you had better call
> creature's __init__. You might make it look like this:
>
> def __init__(self):
> 	self.noise = 'bark'
> 	creature.__init__(self)
>

There's a problem with Chaz's __init__() method.  Notice that the
creature class's __init__ sets self.noise to the empty string.  In this
case, the superclass's __init__() method should be called first:

class dog(creature):
    def __init__(self):
        creature.__init__(self)
        self.noise = "bark"
    def voice(self):
        print "brace your self:"
        creature.voice(self)

  --Jason




More information about the Python-list mailing list