객체 지향 프로그래밍에서는 사용자 정의 클래스의 객체 간에 동등성 검사를 정의하는 것이 중요한 경우가 많습니다. Python에서는 동등성과 불평등 비교를 위해 각각 eq 및 __ne__라는 특수 메소드 구현을 통해 이를 가능하게 합니다.
한 가지 확립된 접근 방식은 dict 속성을 비교하는 것입니다. 두 개의 개체:
class Foo: def __init__(self, item): self.item = item def __eq__(self, other): if isinstance(other, self.__class__): return self.__dict__ == other.__dict__ else: return False
그러나 다음을 더 간단하게 고려하세요. 방법:
class Number: def __init__(self, number): self.number = number def __eq__(self, other): return isinstance(other, Number) and self.number == other.number
이 간결한 방법은 복잡한 dict 비교가 필요하지 않으므로 우아한 대안이 됩니다.
또한 서브클래싱을 원활하게 처리하여 교환 및 교환을 보장합니다. 일관된 동등성 검사:
class SubNumber(Number): pass n1 = Number(1) n2 = Number(1) n3 = SubNumber(1) n4 = SubNumber(4) print(n1 == n2) # True print(n2 == n1) # True print(n1 == n3) # True print(n1 != n4) # True print(len(set([n1, n2, n3]))) # 1
솔루션을 완성하려면 일관된 해싱 및 고유 식별을 위한 hash 방법:
class Number: def __init__(self, number): self.number = number def __eq__(self, other): return isinstance(other, Number) and self.number == other.number def __hash__(self): return hash(self.number)
이는 동등 비교를 위해 dict를 사용할 때 발생하는 해싱 문제를 해결하여 신뢰할 수 있는 집합 동작과 고유 식별을 보장합니다. 별개의 개체입니다.
위 내용은 Python 클래스에서 우아한 동등 비교를 달성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!