246

inPython で独自のクラスを作成している場合、演算子を使用できるようにするには、どの関数を定義する必要がありますか。

class MyClass(object):
    ...

m = MyClass()

if 54 in m:
    ...
4

3 に答える 3

310

MyClass.__contains__(self, item)

于 2010-02-07T14:10:19.473 に答える
245

より完全な答えは次のとおりです。

class MyClass(object):

    def __init__(self):
        self.numbers = [1,2,3,4,54]

    def __contains__(self, key):
        return key in self.numbers

True54 が にあるかどうかを尋ねると、次のようになりますm

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

オーバーロードに関するドキュメントを__contains__参照してください。

于 2010-02-07T21:26:28.157 に答える
7

また、ドメイン固有言語を作成するために使用できた中置演算子オーバーライド フレームワークも参照してください。

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

于 2010-02-08T22:41:37.427 に答える