TypeError: argument of type 'type' is not iterable

from file import x
a = x
if i in a:
    dosomething

file.py:

class x:
def __init__(self):
    self.q = []

def __contains__(self,item):
    return item in self.q

def __iter__(self):
    for i in self.q:
        yield i

Появляется ошибка: TypeError: argument of type 'type' is not iterable Что я делаю не так и как сделать верно?


Ответы (1 шт):

Автор решения: gil9red

Работу нужно делать не с классом (типом), а с объектом. Для этого нужно у класса вызвать конструктор через ().

Попробуйте:

class X:
    def __init__(self):
        self.q = []

    def __contains__(self,item):
        return item in self.q

    def __iter__(self):
        for i in self.q:
            yield i

a = X()
a.q.append(1)
a.q.append(2)
a.q += [3, 4, 5]


if 5 in a:
    print('5!')

for i in a:
    print(i)

PS.

Классы принято называть с верхнего регистра.

→ Ссылка