On 02/12/2015 05:46 PM, MRAB wrote: > On 2015-02-13 00:55, Guido van Rossum wrote: >> On Thu, Feb 12, 2015 at 4:36 PM, Ethan Furman <et...@stoneleaf.us >> <mailto:et...@stoneleaf.us>> wrote: >> >> I suspect the last big hurdle to making built-in data structures >> nicely subclassable is the insistence of such types to >> return new instances as the base class instead of the derived class. >> >> In case that wasn't clear ;) >> >> --> class MyInt(int): >> ... def __repr__(self): >> ... return 'MyInt(%d)' % self >> ... >> --> m = MyInt(42) >> --> m >> MyInt(42) >> --> m + 1 >> 43 >> --> type(m+1) >> <class 'int'> >> >> Besides the work it would take to rectify this, I imagine the >> biggest hurdle would be the performance hit in always >> looking up the type of self. Has anyone done any preliminary >> benchmarking? Are there other concerns? >> >> >> Actually, the problem is that the base class (e.g. int) doesn't know how >> to construct an instance of the subclass -- there is no reason (in >> general) why the signature of a subclass constructor should match the >> base class constructor, and it often doesn't. >> >> So this is pretty much a no-go. It's not unique to Python -- it's a >> basic issue with OO. >> > Really?
What I was asking about, and Guido responded to, was not having to specifically override __add__, __mul__, __sub__, and all the others; if we do override them then there is no problem. -- ~Ethan~
signature.asc
Description: OpenPGP digital signature
_______________________________________________ Python-Dev mailing list Python-Dev@python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com