Message3459
Consider the following class:
class derivedlist(list):
def __init__(self, dotstring):
list.__init__(self, map(int, dotstring.split(".")))
def __str__(self):
return ".".join(map(str, self))
Then do the following:
d1 = derivedlist.derivedlist("1.2.3")
d2 = derivedlist.derivedlist("1.2.4")
d1 < d2
This last operation produces a StackOverflowError.
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
java.lang.StackOverflowError
at
org.python.core.PyBuiltinFunction.<init>(PyBuiltinFunction.java:13)
at org.python.core.PyBuiltinMethod.<init>(PyBuiltinMethod.java:10)
at
org.python.core.PyBuiltinMethodNarrow.<init>(PyBuiltinMethodNarrow.java:16)
at org.python.core.PyList$list___lt___exposer.<init>(Unknown Source)
at org.python.core.PyList$list___lt___exposer.bind(Unknown Source)
at
org.python.core.PyMethodDescr.method_descriptor___get__(PyMethodDescr.java:66)
at org.python.core.PyMethodDescr.__get__(PyMethodDescr.java:59)
at org.python.core.PyListDerived.__lt__(PyListDerived.java:485)
at org.python.core.PySequence.seq___lt__(PySequence.java:150)
at org.python.core.PyList.list___lt__(PyList.java:246)
at org.python.core.PyList$list___lt___exposer.__call__(Unknown
Source)
These last 4 lines are repeated dozens of times.
I used the following to definition of the __lt__ method in the
derivedlist class to work around this problem:
def __lt__(self, other):
if other is None:
return False
l1 = list(self)
l2 = list(other)
return l1 < l2 |
|
Date |
User |
Action |
Args |
2008-08-29 17:46:15 | tmueller | set | recipients:
+ tmueller |
2008-08-29 17:46:15 | tmueller | set | messageid: <1220031975.03.0.901498219564.issue1115@psf.upfronthosting.co.za> |
2008-08-29 17:46:14 | tmueller | link | issue1115 messages |
2008-08-29 17:46:14 | tmueller | create | |
|