Potential improvement on delegation via explicit calls and super

Thomas Guettler guettli at thomas-guettler.de
Fri Dec 17 09:48:50 EST 2004


Am Fri, 17 Dec 2004 02:17:38 -0600 schrieb Robert Dick:

> Derived classes sometimes need to delegate portions of the work in overridden 
> methods to methods in their base classes.  This was traditionally done with 
> explicit calls in python, e.g.,
> 
> class Base:
>   def __init__(self):
>     print 'base'
> 
> class Left(Base):
>   def __init__(self, arg):
>     Base.__init__(self)
>     print 'left'
> 
> class Right(Base):
>   def __init__(self, arg):
>     Base.__init__(self)
>     print 'right'

If you can change the source of Base, I would do it like
this:

class Base:
    _init_done=0
    def __init__(self):
        if self._init_done:
            return
        self._init_done=1

        # ... do init


 Thomas

-- 
Thomas Güttler, http://www.thomas-guettler.de/





More information about the Python-list mailing list