Python 클래스를 동일하게 유지: 등가 방법에 대한 종합 가이드
Python에서 eq 및 ne 특수 메소드는 사용자 정의 클래스에 대한 동등성을 정의하는 편리한 방법을 제공합니다. __dict__s를 비교하는 기본 접근 방식은 실행 가능한 옵션이지만 하위 클래스 및 다른 유형과의 상호 운용성 문제에 직면할 수 있습니다.
더 강력한 동등성 처리
이 문제를 해결하려면 제한 사항이 있으므로 보다 포괄적인 구현을 고려하십시오.
class Number: def __init__(self, number): self.number = number def __eq__(self, other): if isinstance(other, Number): return self.number == other.number return NotImplemented def __ne__(self, other): x = self.__eq__(other) if x is not NotImplemented: return not x return NotImplemented def __hash__(self): return hash(tuple(sorted(self.__dict__.items()))) class SubNumber(Number): pass
이 버전에는 다음이 포함됩니다.
유효성 검사 및 테스트
이 접근 방식의 견고성을 확인하기 위해 다음과 같은 일련의 주장이 있습니다.
n1 = Number(1) n2 = Number(1) n3 = SubNumber(1) n4 = SubNumber(4) assert n1 == n2 assert n2 == n1 assert not n1 != n2 assert not n2 != n1 assert n1 == n3 assert n3 == n1 assert not n1 != n3 assert not n3 != n1 assert not n1 == n4 assert not n4 == n1 assert n1 != n4 assert n4 != n1 assert len(set([n1, n2, n3])) == 1 assert len(set([n1, n2, n3, n4])) == 2
이러한 주장은 동등 방법의 올바른 동작과 해시 값의 일관성을 보여줍니다.
이보다 포괄적인 접근 방식을 채택하면 강력한 등가 처리 기능을 갖춘 Python 클래스를 생성하여 안정적인 비교와 정확한 집합 및 사전 작업을 보장할 수 있습니다.
위 내용은 내 Python 클래스가 실제로 동일한지 확인하는 방법: 동등 메서드 가이드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!