답변

4

클래스가 연산자를 재정의하는 적절한 __eq__ 메서드를 구현하는지 여부에 따라 모두 다릅니다.

편집 : 추가 약간의 예 :

>>> class foo: 
...  def __init__(self,x): 
...   self.x = x 
...  def __eq__(self,y): 
...   return int(self.x)==int(y) 
... 
>>> f = foo(5) 
>>> f == '5' 
True 
>>> 5 == '5' 
False 
2

볼 수 있습니다 :

>>> float(2) == int(2) 
True 

다른 유형이 ==을 사용하여 동일한 것으로 간주 할 수있다.

1

질문 : "서로 다른 유형의 == 값이 r에 나는 다른 반환 값을 연구하고 난을 제공 할"

답변 : 분명히 다릅니다. 그들에는 다른 유형이있다. 위의 예에서

>>> print(type(i)) 
<type 'int'> 
>>> print(type(n)) 
<class '__main__.Numeric'> 

, 나는 테스트 뭔가를 가지고 Numeric라는 클래스를 선언했다. Numeric이라는 클래스를 구현하는 모듈이 실제로있는 경우 __main__.Numeric이 아니라 다른 것을 말합니다.

클래스가 __eq__() 메소드 함수를 구현하는 경우 ==의 결과는 해당 함수의 기능에 따라 다릅니다. 위의와

class AlwaysEqual(object): 
    def __init__(self, x): 
     self.x = x 
    def __eq__(self, other): 
     return True 

, 우리가 지금 할 수있는 :

>>> x = AlwaysEqual(42) 
>>> print(x == 6*9) 
True 
>>> print(x == "The answer to life, the universe, and everything") 
True 
관련 문제