본문 바로가기
Language/Python

파이썬 동등비교 __eq__()

by Wikinist 2023. 7. 31.

파이썬에서 클래스에 동등비교를 위해 사용하는 함수는 __eq__() 메서드입니다. __eq__() 메서드를 정의하여 객체의 동등비교를 커스텀하게 구현할 수 있습니다. 이 함수를 작성하면 set 등과 같은 컬렉션에 포함될 때 동등비교가 제대로 이루어질 수 있습니다.

__eq__() 메서드는 두 객체가 동등한지를 판별하는데 사용됩니다. 이 메서드는 두 개의 인자를 받는데, 첫 번째 인자는 self로 현재 객체를 나타내며, 두 번째 인자는 비교 대상 객체입니다. 반환 값은 True 또는 False로, True를 반환하면 두 객체가 동등하다고 판단됩니다.

예시로 간단한 클래스 MyClass를 정의하고 __eq__() 메서드를 추가해보겠습니다:

class MyClass:
    def __init__(self, value):
        self.value = value

    def __eq__(self, other):
        if not isinstance(other, MyClass):
            return False
        return self.value == other.value

# 예시 사용
obj1 = MyClass(10)
obj2 = MyClass(20)
obj3 = MyClass(10)

print(obj1 == obj2)  # 출력: False
print(obj1 == obj3)  # 출력: True

# set에 객체를 추가하고 중복을 제거하여 동등비교
my_set = set([obj1, obj2, obj3])
print(my_set)  # 출력: {<__main__.MyClass object at 0x...>, <__main__.MyClass object at 0x...>}

위의 예시에서 MyClass의 __eq__() 메서드는 value 속성이 같은 경우에만 두 객체를 동등하다고 판단합니다. 따라서 obj1과 obj3를 set에 추가할 때 중복이 제거되는 것을 확인할 수 있습니다.

__eq__() 메서드를 정의하는 것으로 커스텀 클래스를 set과 같은 컬렉션에 포함할 때 원하는 동등비교를 할 수 있습니다. 이렇게 함으로써, 컬렉션에 포함된 객체들 간의 동등성 여부를 더 정확하게 판단할 수 있게 됩니다.

해당 게시글은 ChatGPT의 도움을 받아 작성되었습니다.

'Language > Python' 카테고리의 다른 글

리스트 컴프리헨션  (0) 2023.08.10
strftime(), strptime()  (0) 2023.07.31
부분 집합의 출연 횟수 구하기  (0) 2023.07.29
로그 필터 설정  (0) 2023.07.23
루트로거, 차일드로거  (0) 2023.07.23