Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

파이썬 클래스에서 등가("평등") 연산자를 어떻게 사용합니까?

<시간/>

아래 코드와 같이 등호 연산자를 사용하면 false가 출력됩니다.

class Integer:
    def __init__(self, number):
        self.number = number

n1 = Integer(1)
n2 = Integer(1)
print bool(n1 == n2)

출력

False

Python은 기본적으로 비교 작업에 개체 식별자를 사용하기 때문입니다.

이 문제를 극복하려면 __eq__function

을 재정의해야 합니다.
class Integer:
    def __init__(self, number):
        self.number = number
    def __eq__(self, other):

       if isinstance(self, other.__class__):

          return self.__dict__ == other.__dict__

       return False
n1 = Integer(1)
n2 = Integer(1)
print bool (n1 == n2)
print bool (n1 != n2)

출력

True
True

Python 2.x의 경우 __ne__function도 재정의해야 합니다. 이것은 Python 3.x에 필요하지 않습니다. 문서에 따르면 다음이 적용됩니다.

기본적으로 __ne__()은 __eq__()에 위임하고 NotImplemented가 아닌 한 결과를 반전합니다. 비교 연산자 사이에는 다른 암시적 관계가 없습니다. 예를 들어 (x