2010-01-12 40 views
1
class a(object): 
    def a(self): 
     return True 
    __contains__=a 

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

请:当你得到一个错误,包括问题的错误。 – 2010-01-12 02:58:31

+0

另外,最好的做法是在分配中包含'='符号周围的空格(尽管不一定在函数参数中),并且在注释之前。代码看起来有点卡在一起。 – LeafStorm 2010-01-12 12:22:18

回答

7

__contains__是为了接受一个参数。 a不接受参数。

以下是一个工作__contains__你的例子:

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

__contains__的签名是:

object.__contains__(self, item)

documentation。您需要延长您的“一”的方法:

def a(self, item)

class a(object): 
    def a(self, item): 
     return True 
    __contains__=a 
相关问题