我不明白我的bug中的逻辑在哪里,所以我设法找到一个最小的例子。我定义了一个类t
,并说当您使用< =运算符时发生了某些情况,并且a> = b必须计算b < = a。 它工作正常python:丰富的比较运算符递归循环
然后,我从t
派生子类u
。 当我比较两个值时,如果它们都来自t
或两者都来自u
它按预期工作,但如果来自类u
和另一个来自t
类失败。 为什么 ??
class t :
def __le__(self,other) : return True
def __ge__(self,other) : return(other<=self)
class u(t) :
pass
a=t()
b=u()
#works
a<=a
a>=a
b<=b
b>=b
#works
a>=b
b<=a
#doesn't work RuntimeError: maximum recursion depth exceeded
a<=b
b>=a
编辑:在Python 2.x的(从tobias_k)没有问题,但我想使用Python 3.3至少
哪一类是a和b? – akaRem
@akaRem对不起,我添加了'a'和'b'的定义。 – Xoff
只是在FYI中,在Python 2.x中它“按预期工作”(始终返回true)。 –