[Python-ideas] Override dict.__new__ to raise if cls is not dict; do the same for str, list, etc.
tjreedy at udel.edu
Thu Apr 21 19:13:04 EDT 2016
On 4/21/2016 7:30 AM, Steven D'Aprano wrote:
> I wonder whether we should have a class decorator which automatically
> adds the appropriate methods?
> It would need some sort of introspection to look at the superclass and
> adds overridden methods? E.g. if the superclass is float, it would add a
> bunch of methods like:
> def __add__(self, other):
> x = super().__add__(other)
> if x is NotImplemented:
> return x
> return type(self)(x)
> but only if they aren't already overridden. Then you could do this:
> @decorator # I have no idea what to call it.
> class MyInt(int):
> and now MyInt() + MyInt() will return a MyInt, rather than a regular
> Getting the list of dunder methods is easy, but telling whether or not
> they should return an instance of the subclass may not be.
Interesting idea. I would start with a TDDed fix_int_subclass, then a
TDDed fix_list_subclass, and only then think about whether there is
enough common code to refactor.
Terry Jan Reedy
More information about the Python-ideas