如何重载运算符`in`?

How to overload operator `in`?

如何重载运算符in,前提是我在定义的class中对运算符[]使用了__getitem__

class myClass:
    def __init__(self):
        self.slots = [None]*5

    def __setitem__(self, key, data):
        self.set(key, data)

    def __getitem__(self,key):
        return self.get(key)

    def set(self, key, data):
        self.slots[key]=data

    def get(self,key):
        return self.slots[key]

s=myClass()
s[0]='first'
s[1]='second'
print(s[0])#<-------first
print(s.slots)#<----['first', 'second', None, None, None]

如何用 in 实现功能?

print(('second' in s))#<----True
print(('third' in s))#<-----False

in 运算符将调用 __contains__ 魔法方法。 参见 https://docs.python.org/2/reference/datamodel.html#object.contains

没有必要,如果你尝试:

"second" in ["first", "second"]

它会return如你所愿