[Python-Dev] subclassing builtin data structures

Guido van Rossum guido at python.org
Fri Feb 13 01:55:56 CET 2015


On Thu, Feb 12, 2015 at 4:36 PM, Ethan Furman <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.

-- 
--Guido van Rossum (python.org/~guido)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-dev/attachments/20150212/eb257488/attachment.html>


More information about the Python-Dev mailing list