Я представляю деревья с кортежами. Say
t1=(t2,t3) and t4=(t5,t6)
Правда ли, что при сравнении двух таких деревьев с ==
сначала проверяется, равны ли ссылки t2
и t5
, а затем равны ли ссылки t3
и t6
, если они не равны, то он пытается сравнить фактическое содержимое t2
и t5
, а затем содержимое t3
и t6
?
LE:
Следующий код не вызывает __eq__
, кажется, что мое предположение верно, и что он не оценивает рекурсивную последовательность, как я понимаю из документации.
class C:
def __init__(self,a):
self.a=a
def __eq__(self,oth):
print self.a,oth.a
return oth.a==self.a
p=(C(1),C(2))
l=(p,p)
f=(p,p)
print l==f
С другой стороны, этот код вызывает __eq__
q=(C(1),C(2))
p=(C(1),C(2))
l=(q,q)
f=(p,p)
print l==f