Should one always add super().__init__() to the __init__?
Devin Jeanpierre
jeanpierreda at gmail.com
Sat Sep 29 14:18:03 EDT 2012
On Sat, Sep 29, 2012 at 1:17 PM, Steven D'Aprano
<steve+comp.lang.python at pearwood.info> wrote:
> No. Only add code that works and that you need. Arbitrarily adding calls
> to the superclasses "just in case" may not work:
>
>
>
> py> class Spam(object):
> ... def __init__(self, x):
> ... self.x = x
> ... super(Spam, self).__init__(x)
> ...
> py> x = Spam(1)
> Traceback (most recent call last):
> File "<stdin>", line 1, in <module>
> File "<stdin>", line 4, in __init__
> TypeError: object.__init__() takes no parameters
That's a good thing. We've gone from code that doesn't call the
initializer and leaves the object in a potentially invalid state
(silently!), to code that calls the initializer and then fails
(loudly).
-- Devin
More information about the Python-list
mailing list