파이썬에서 클래스에 동등비교를 위해 사용하는 함수는 __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 |