Область видимости#

У каждого метода в классе своя локальная область видимости. Это значит, что один метод класса не видит переменные другого метода класса. Для того чтобы переменные были доступны, надо присваивать их экземпляру через self.name. По сути метод - это функция привязанная к объекту. Поэтому все нюансы, которые касаются функций, относятся и к методам.

Переменные экземпляра доступны в другом методе, потому что каждому методу первым аргументом передается сам экзепляр. В примере ниже, в методе __init__ переменные hostname и model присваиваются экземпляру, а затем в info используются, за счет того, что экземпляр передается первым аргументом:

class Switch:
    def __init__(self, hostname, model):
        self.hostname = hostname
        self.model = model

    def info(self):
        print('Hostname: {}\nModel: {}'.format(self.hostname, self.model))