6
Załóżmy, że mam następujący program:Czy __ne__ korzysta z nadpisanego __eq__?
class A(object):
def __eq__(self, other):
return True
a0 = A()
a1 = A()
print a0 != a1
Jeśli uruchomić go z Python wyjście jest True
. Moje pytanie brzmi:
- Metoda
__ne__
nie jest zaimplementowana, czy Python ma domyślną wartość? - jeśli Python upada na domyślną metodę ustalenia, czy dwa obiekty są równe, czy nie, czy nie powinien wywołać
__eq__
, a następnie zanegować wynik?
Więc jeśli '' __ne__'' nie jest zaimplementowane, czy Python nie powinien generować wyjątku, jeśli użyję ''! = '' Do porównania dwóch obiektów? – dorafmon
@dorafmon: nie, ponieważ domyślna implementacja nie konsultuje '__eq__', po prostu zwraca' self is not other'. –