[Python-Dev] Semantics of __int__(), __index__()

Steven D'Aprano steve at pearwood.info
Wed Apr 3 19:41:27 CEST 2013


On 04/04/13 03:36, Guido van Rossum wrote:

> Consider a subclass of int() that overrides __repr__() and __str__() to
> print something fancy (maybe it defaults to hex; maybe it's an enum :-). I
> want to be able to say repr(int(x)) and get the standard decimal
> representation. Same with strings. If int() or str() were allowed to return
> a subclass instance, this wouldn't work, and I'd have to resort to
> draconian measures.


int and str currently are allowed to return subclass instances.


> (Betcha the first few solutions you come up with don't
> even work. :-)

Well, I'm always game to learn something. Challenge accepted.


# Force a string subclass s to a built-in string.
''.join(s)


# Force an int subclass n to a built-in int.
(0).__add__(n)


# And similarly for float subclass.
0.0.__add__(x)



-- 
Steven


More information about the Python-Dev mailing list