는 :파이썬 동등한 유형에는 다른 값이 있습니까? 나는 다음과 같은 코드가있는 경우 파이썬에서
r = Numeric(str)
i = int(r)
if r == i :
return i
return r
은이 동일합니다 : 다른 유형의 연구
r = Numeric(str)
return r
또는 수행 == 값과 내가 다른 반환 값을 R을주고 난 ?
는 :파이썬 동등한 유형에는 다른 값이 있습니까? 나는 다음과 같은 코드가있는 경우 파이썬에서
r = Numeric(str)
i = int(r)
if r == i :
return i
return r
은이 동일합니다 : 다른 유형의 연구
r = Numeric(str)
return r
또는 수행 == 값과 내가 다른 반환 값을 R을주고 난 ?
클래스가 연산자를 재정의하는 적절한 __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
볼 수 있습니다 :
>>> float(2) == int(2)
True
다른 유형이 ==
을 사용하여 동일한 것으로 간주 할 수있다.
질문 : "서로 다른 유형의 == 값이 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