Question: Inheritance from a buil-in type
Alex Martelli
aleax at aleax.it
Mon Sep 29 11:36:47 EDT 2003
T. Kaufmann wrote:
> Hi there,
>
> A simple but important question:
>
> How can I initialize a super class (like dict) correctly in my subclass
> constructor?
Generally, you also want to override __new__ -- not in all cases can
you do all you want in __init__ by itself (e.g., it's far too late
when you inherit from immutable types, such as numbers, str, tuple).
> A sample:
>
> class MyClass(dict):
> def __init__(self):
> dict.__init__(self)
> ...
Yeah, you can do this, but the dict.__init__ call with just the
self parameter is actually redundant (it wouldn't be if there
WERE arguments -- either keyword ones, or a sequence of pairs,
or both -- with which to actually initialize a non-empty dict...).
> Is there a general rule to do this for all buil-in types?
Generally, the super built-in may be advisable if you think you
may ever be involved in a multiple-inheritance graph. But that
is no different whether built-in types are involved, or not. I'm
not sure what "general rule" may be different for built-in types
than for others -- offhand, I don't think there are such differences.
Alex
More information about the Python-list
mailing list