Курс Python → Разрешение имен в Python

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

Для решения этой проблемы можно использовать ключевое слово self, которое позволяет обращаться к переменным класса из внутренних областей. При обращении к переменным класса из методов класса необходимо использовать синтаксис self.имя_переменной.

Пример:


class MyClass:
    class_variable = 10
    
    def my_method(self):
        print(self.class_variable)
        
    class MyNestedClass:
        def nested_method(self):
            # Нельзя обратиться к class_variable напрямую
            # print(class_variable) 
            # Но можно обратиться через self
            print(self.class_variable)

В данном примере мы определяем класс MyClass с переменной class_variable и методом my_method, который обращается к переменной класса через self. Также у нас есть вложенный класс MyNestedClass, в методе которого также можно обратиться к переменной класса через self.

Таким образом, понимание механизма разрешения имен в Python позволяет эффективно организовывать код и избегать ошибок, связанных с областями видимости переменных внутри классов.

Твои коллеги будут рады, поделись в

Автор урока

Дмитрий Комаровский
Дмитрий Комаровский

Автоматизация процессов
в КраснодарБанки.ру

Другие уроки курса "Python"

  1. Введение в Python
  2. Руководство по Pymorphy2
  3. Фильтры Pillow: NEAREST, BILINEAR, BICUBIC
  4. Декоратор Property в Python
  5. Функция zip() в Python
  6. Перегрузка операторов в Python
  7. Получение размера объекта с sys.getsizeof()
  8. Список переменных с %who
  9. Удаление дубликатов в pandas
  10. Изменение IP-адреса в Python
  11. Однострочники Python
  12. Декоратор @override
  13. Объединение списков с использованием itertools.chain
  14. Изменение регистра данных
  15. Возврат нескольких значений из функции
  16. Работа с дробями в Python
  17. Профилирование данных с Pandas.
  18. Переменные в Python
  19. Форматирование строк в Python
  20. Функция product() в Python
  21. Работа с рекламными данными в Pandas
  22. Принципы Zen Python
  23. Декораторы для регистрации функций
  24. Функция __init__ в Python
  25. Подсчет вхождений элементов
  26. Получение текущей директории
  27. Форматирование данных с помощью pprint
  28. Дефолтные параметры в Python
  29. Итераторы в Python
  30. Многострочные строки в Python
  31. Базовые объекты Python
  32. Создание копии списка в Python
  33. Обработка StopIteration в Python
  34. Закрытие файла в Python
  35. Создание лямбда-функций
  36. Создание циклической ссылки
  37. Модуль itertools: комбинации и перестановки
  38. Импорт классов из другого файла
  39. Документация функции help() в Python
  40. Управление IP-адресами через прокси
  41. Управление User-Agent в Python
  42. Генерация случайных чисел в Python
  43. Импорт модулей в Python 3.12
  44. Аннотации типов в Python
  45. Форматирование данных с помощью pprint
  46. split() без разделителя
  47. Методы обработки строк в Python

Marketello читают маркетологи из крутых компаний