[Python-Dev] subclassing builtin data structures
Ethan Furman
ethan at stoneleaf.us
Fri Feb 13 02:00:37 CET 2015
On 02/12/2015 04:55 PM, 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.
Thank you.
--
~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/36e5e6b5/attachment.sig>
More information about the Python-Dev
mailing list