return an object of a different class
Steven D'Aprano
steve+comp.lang.python at pearwood.info
Thu Feb 17 21:25:39 EST 2011
On Thu, 17 Feb 2011 15:53:14 -0800, Westley MartÃnez wrote:
>> > Python 3 removed longs because they were ... cryptonic!
>> >
>> Strictly speaking, they weren't removed. ints were removed and long was
>> renamed int.
> My point stands.
Your point is wrong. Ints and longs weren't unified because it is
"cryptonic" (cryptic?), but to avoid the user needing to care about the
difference between ints and longs. I've been coding in Python since
version 1.5, and I can tell you I hated the need to write code like this:
def make_int(obj):
try:
return int(obj)
except ValueError:
return long(int)
To say nothing of:
def add(x, y):
try:
return x+y
except OverflowError:
return long(x)+long(y)
Having the int class automatically promote instances to long as needed
was a HUGE win for simplicity and readability, while still saving memory
and performance for small ints.
Still not convinced that it's allowed to return objects of a different
type? From Python 3.1:
>>> reversed
<class 'reversed'>
>>> reversed((1,2,3))
<reversed object at 0x9beb9cc>
>>> reversed("abcd")
<reversed object at 0x9beb9cc>
>>> reversed([1,2,3])
<list_reverseiterator object at 0x9beb70c>
>>> reversed(range(10))
<range_iterator object at 0xb7cd8a88>
--
Steven
More information about the Python-list
mailing list