Переменная не определена
у меня есть класс в котором есть функция process
class MHandler():
cid = [18279831, 4436809]
def process(self, event):
for i in cid:
print(i)
когда функция вызывается, я пытаюсь перебрать массив cid но вижу ошибку
NameError: name 'cid' is not defined
что я делаю не правильно?
Ответы (1 шт):
Автор решения: user459826
→ Ссылка
К переменной класса надо обращаться или с именем класса MHandler.cid или с self.cid
class MHandler():
cid = [18279831, 4436809]
def process(self, event):
for i in self.cid:
print(i)
>>> x = MHandler()
>>> x.process(123)
18279831
4436809
PS Как правильно заметил @CrazyElf, в данном случае нет разницы, как обратится. Но в общем случае:
- с именем класса идет обращение к переменной класса, которая одинаковая для всех экземпляров класса
- а с self идет обращение к переменной экземпляра класса - она у каждого экземпляра своя
Разница будет заметна после присвоения нового значения одной из этих переменных, тогда они будут отличаться.