2010-01-12 45 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 
相關問題