[Python-Dev] subclassing builtin data structures
Ethan Furman
ethan at stoneleaf.us
Fri Feb 13 03:14:22 CET 2015
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 <ethan at stoneleaf.us
>> <mailto:ethan at 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~
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: OpenPGP digital signature
URL: <http://mail.python.org/pipermail/python-dev/attachments/20150212/d7996d1e/attachment.sig>
More information about the Python-Dev
mailing list