A superclass using a child classes' methods

Jean-Michel Pichavant jeanmichel at sequans.com
Wed Jun 24 18:23:28 CEST 2009


Kurt Schwehr wrote:
> I'm trying to build an OO system for encoding and decoding
> datapackets.  I'd like the parent class to have an encode function
> that uses each of the child classes' packing methods.  It appears that
> this works for attributes of children accessed by the parent, but not
> for methods.
hell no, this works for methods as well.
>   Is that right?  For attributes I found this example,
> where the alphabet attribute is set in the child, but used in the
> parent.
>
> http://www.pasteur.fr/formation/infobio/python/ch19s04.html
>
> Should I just set an attribute in the child class and then call the
> super's functionality making is pull the data from the attribute?
>
> Thanks,
> -kurt
>   
class Parent:
    def foo(self):
       raise NotImplementedError() # virtual method, it has to be 
overriden by childs

    def bar(self):
       self.foo()

class Son(Parent):
    def foo(self):
       print "I'm your son"

class Daughter(Parent):
    def foo(self):
       print "I'm your daughter"

Son().bar()
"I'm your son"

Declaring the foo method at the Parent level is not required. But it's a 
good practice: explicit > implicit and it helps to write proper 
documentation.

Jean-Michel



More information about the Python-list mailing list