New submission from Hagen Fürstenau <[EMAIL PROTECTED]>: On Python 3.0:
>>> class C: ... def __len__(self): return "foo" ... >>> len(C()) Traceback (most recent call last): File "<stdin>", line 1, in <module> SystemError: Objects/longobject.c:433: bad argument to internal function On Python 2.6 the behaviour is different for old and new-style classes, with old-style classes giving the more informative error message and both accepting (and truncating) floats. I attached a patch for Python 3.0, which refuses everything but ints and gives an informative error message. Or does the float-truncating behaviour of Python 2.x need to be preserved? ---------- files: len_check.diff keywords: patch messages: 72141 nosy: hagen severity: normal status: open title: SystemError on calling len() if __len__() doesn't return an int type: behavior versions: Python 2.6, Python 3.0 Added file: http://bugs.python.org/file11307/len_check.diff _______________________________________ Python tracker <[EMAIL PROTECTED]> <http://bugs.python.org/issue3729> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com