[Python-ideas] Override dict.__new__ to raise if cls is not dict; do the same for str, list, etc.
steve at pearwood.info
Wed Apr 20 23:15:43 EDT 2016
On Wed, Apr 20, 2016 at 07:51:37PM -0700, Neil Girdhar wrote:
> Sometimes users inherit from builtin types only to find that their
> overridden methods are not called. Instead of this being a trap for
> unsuspecting users, I suggest overriding the __new__ method of these types
> so that it will raise with an informative exception explaining that, e.g.,
> instead of inheriting from dict, you should inherit from UserDict.
What about those who don't want or need to inherit from UserDict, and
are perfectly happy with inheriting from dict? Why should we break their
working code for the sake of people whose code already isn't working?
Not everyone who inherits from dict tries to override __getitem__ and
__setitem__ and are then surprised that other methods don't call their
overridden methods. We shouldn't punish them.
More information about the Python-ideas