Extending classes __init__behavior for newbies
ben+python at benfinney.id.au
Mon Feb 14 00:19:44 CET 2011
James Mills <prologic at shortcircuit.net.au> writes:
> On Mon, Feb 14, 2011 at 8:21 AM, MRAB <python at mrabarnett.plus.com> wrote:
> > I would've done it this way:
> > class FasterShip(Ship):
> > def __init__(self, speed=0, **kwargs):
> > Ship.__init__(self, **kwargs)
> > self.speed = speed
> What's the difference between calling the base
> class's constructor directly and using the super type ?
The difference arises in multiple inheritance. Your class can never know
whether it is used as part of a multiple-inheritance hierarchy, in which
case calling the base class directly would be the wrong thing to do
since that might not match the MRO.
However, using ‘__super__’ properly is very problematic. A case can be
made that it's an inherent problem of multiple inheritance, which should
therefore be avoided. Search the archives of this forum to learn more.
\ “If you don't know what your program is supposed to do, you'd |
`\ better not start writing it.” —Edsger W. Dijkstra |
More information about the Python-list