Переменная не определена

у меня есть класс в котором есть функция 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 идет обращение к переменной экземпляра класса - она у каждого экземпляра своя

Разница будет заметна после присвоения нового значения одной из этих переменных, тогда они будут отличаться.

→ Ссылка