>  기사  >  백엔드 개발  >  Python에서 객체의 속성 동등성을 어떻게 비교할 수 있나요?

Python에서 객체의 속성 동등성을 어떻게 비교할 수 있나요?

Barbara Streisand
Barbara Streisand원래의
2024-11-03 21:52:30228검색

How Can I Compare Objects for Attribute Equality in Python?

객체의 속성 동등성 비교

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.