복붙노트

[PYTHON] 파이썬의 'in'연산자를 재정의 하시겠습니까?

PYTHON

파이썬의 'in'연산자를 재정의 하시겠습니까?

파이썬에서 내 자신의 클래스를 만들면 'in'연산자를 사용할 수 있도록 어떤 함수를 정의해야합니까?

class MyClass(object):
    ...

m = MyClass()

if 54 in m:
    ...

해결법

  1. ==============================

    1.MyClass .__에 __ (자체, 항목)이 있습니다.

    MyClass .__에 __ (자체, 항목)이 있습니다.

  2. ==============================

    2.보다 완전한 대답은 다음과 같습니다.

    보다 완전한 대답은 다음과 같습니다.

    class MyClass(object):
    
        def __init__(self):
            self.numbers = [1,2,3,4,54]
    
        def __contains__(self, key):
            return key in self.numbers
    

    54가 m에 있는지 물으면 여기에서 True를 얻습니다.

    >>> m = MyClass()
    >>> 54 in m
    True  
    

    과부하 __contains__ 설명서를 참조하십시오.

  3. ==============================

    3.또한 도메인 특정 언어를 작성하는 데 사용할 수있는 중위 연산자 대체 프레임 워크를 살펴볼 수도 있습니다.

    또한 도메인 특정 언어를 작성하는 데 사용할 수있는 중위 연산자 대체 프레임 워크를 살펴볼 수도 있습니다.

    http://code.activestate.com/recipes/384122/

  4. from https://stackoverflow.com/questions/2217001/override-pythons-in-operator by cc-by-sa and MIT license