Python에서는 속성을 기반으로 객체 인스턴스의 동등성을 비교하는 것이 일반적인 프로그래밍 작업일 수 있습니다. 그러나 Python의 기본 항등 연산자(==)는 속성 값이 아닌 객체 ID를 확인합니다.
다음 예를 고려하세요.
<code class="python">class MyClass: def __init__(self, foo, bar): self.foo = foo self.bar = bar x = MyClass('foo', 'bar') y = MyClass('foo', 'bar') print(x == y) # Output: False</code>
x와 y의 속성 값은 동일하지만 , 동일성 검사는 서로 다른 객체 인스턴스이기 때문에 False를 반환합니다. 이 문제를 해결하고 속성 값이 같음을 고려하려면 __eq__ 메서드를 구현해야 합니다.
<code class="python">class MyClass: def __init__(self, foo, bar): self.foo = foo self.bar = bar def __eq__(self, other): if not isinstance(other, MyClass): return False # Don't compare with different types return self.foo == other.foo and self.bar == other.bar print(x == y) # Output: True</code>
__eq__ 메서드를 재정의하면 클래스의 같음 동작을 정의하고 클래스의 속성 값을 확인할 수 있습니다. 비교. 이렇게 하면 동일한 속성 값을 가진 객체가 원하는 대로 동일한 것으로 간주됩니다.
__eq__를 구현하면 객체를 해시할 수 없게 됩니다. 즉 객체는 세트 및 사전에 키로 참여할 수 없습니다. 이 동작을 원하지 않는 경우 __hash__ 구현을 고려하여 객체가 불변 데이터를 나타내는 경우 객체를 해시 가능하게 만드세요.
위 내용은 Python에서 객체의 속성 동등성을 어떻게 비교할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!