>  기사  >  백엔드 개발  >  Python에서 객체 인스턴스에 대한 동등 비교를 정의하는 방법은 무엇입니까?

Python에서 객체 인스턴스에 대한 동등 비교를 정의하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-03 20:49:29796검색

How to Define Equality Comparison for Object Instances in Python?

속성을 기준으로 객체 인스턴스가 동일한지 비교하는 방법

Python은 기본적으로 객체 인스턴스를 참조로 비교합니다. 즉, 두 객체가 동일하더라도 속성 값이 동일하지 않은 것으로 간주됩니다. 이 동작은 객체 속성을 기반으로 동일성 검사를 수행해야 할 때 문제가 될 수 있습니다.

이 문제에 대한 한 가지 해결책은 클래스에 __eq__ 메서드를 구현하는 것입니다. 이 방법을 사용하면 클래스의 두 인스턴스가 동일한 것으로 간주되는 조건을 정의할 수 있습니다.

__eq__를 구현하려면 다음 단계를 따르세요.

  1. 다음 서명으로 함수를 정의하세요. def __eq__(self, other).
  2. 다른 객체가 self와 동일한 클래스인지 확인합니다.
  3. other가 다른 클래스인 경우 NotImplemented를 반환합니다.
  4. self와 other의 속성 값을 비교하여 동일한지 확인합니다.

예를 들어 다음은 MyClass 클래스에 대한 __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 NotImplemented

        return self.foo == other.foo and self.bar == other.bar</code>

이 구현을 사용하면 MyClass 인스턴스 foo 및 bar 속성을 기준으로 동등성을 비교할 수 있습니다.

<code class="python">x = MyClass('foo', 'bar')
y = MyClass('foo', 'bar')

print(x == y)  # True</code>

__eq__를 구현하면 클래스 인스턴스를 해시할 수 없게 됩니다. 인스턴스를 세트나 사전에 저장해야 하는 경우 __hash__ 메소드를 구현하여 객체에 대한 해시 함수를 정의해야 합니다.

위 내용은 Python에서 객체 인스턴스에 대한 동등 비교를 정의하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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