我有'__contains__',为什么错误

时间:2010-01-12 02:01:51

标签: python

class a(object):
    def a(self):
        return True
    __contains__=a

b=a()
print 2 in b#why error

2 个答案:

答案 0 :(得分:7)

__contains__是为了争论。 a不接受论证。

以下是有效__contains__的示例:

>>> class a(object):
...     def a(self, item):
...         return True
...     __contains__=a
...
>>> b=a()
>>> print 2 in b
True

答案 1 :(得分:3)

__contains__的签名是:

object.__contains__(self, item)

根据documentation。你需要扩展你的“a”方法:

def a(self, item)

class a(object):
    def a(self, item):
        return True
    __contains__=a