у меня есть «__contains__», почему ошибка

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

b=a()
print 2 in b#why error
  • 0
    Пожалуйста, при появлении ошибки включите ошибку в вопрос.
  • 0
    Кроме того, рекомендуется включать пробелы вокруг знаков = в присваиваниях (хотя не обязательно в аргументах функций) и перед комментариями. Код выглядит как-то смешанный.
Теги:

2 ответа

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)

согласно документации. Вам необходимо расширить свой метод "a":

def a(self, item)

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню