class a(object):
def a(self):
return True
__contains__=a
b=a()开发者_开发知识库
print 2 in b#why error
__contains__
is meant to take an argument. a
doesn't accept an argument.
The following is your example with a working __contains__
:
>>> class a(object):
... def a(self, item):
... return True
... __contains__=a
...
>>> b=a()
>>> print 2 in b
True
The signature of __contains__
is:
object.__contains__(self, item)
as per documentation. You need to extend your "a" method:
def a(self, item)
class a(object):
def a(self, item):
return True
__contains__=a
精彩评论