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

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

пожалуйста: когда вы получаете сообщение об ошибке, включите ошибку в вопросе. –

+0

Кроме того, лучше всего включать пробелы вокруг ваших '=' знаков в присваиваниях (хотя необязательно в аргументах функций) и перед комментариями. Код выглядит как замятый. – LeafStorm

ответ

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 
Смежные вопросы