[Python-Dev] integer subclass range behavior
Joseph Armbruster
josepharmbruster at gmail.com
Thu Dec 20 02:38:19 CET 2007
All,
I posted this up to comp.lang.python earlier today and asked a few questions
around IRC. The general consensus appeared to be that this was a bug. Before
opening up an issue on it, I wanted to run it by this list first (just in case)
Here is a copy / paste from comp.lang.python:
URL:
http://groups.google.com/group/comp.lang.python/browse_frm/thread/801f227fceff4066#e0305608a5931af1
Post:
I was wondering what would happen, so I tried this out for the heck of it with:
Python 3.0a2 (py3k:59572M, Dec 19 2007, 15:54:07) [MSC v.1500 32 bit (Intel)]
on win32
class a(int):
def __new__(cls,number):
return int.__new__(cls,number)
for x in range(0,a(5)):
print(x)
Which resulted in a:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "a.py", line 5, in <module>
for x in range(0,a(5)):
SystemError: ..\Objects\longobject.c:400: bad argument to internal
function
[41030 refs]
It looks like the rangeobject performs a FitsInLong test on each of
the parameters to range, which uses the function
_PyLong_FitsInLong(PyObject *vv) within longobject.c. In tern, this
performs a typecheck: #define PyLong_CheckExact(op) (Py_TYPE(op) ==
&PyLong_Type) that fails.
Interesting!
More information about the Python-Dev
mailing list