Курс 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. Извлечение аудио из видео
  2. Поиск индексов в списке
  3. Переопределение метода divmod
  4. Капитализация строк
  5. Взаимодействие с sys
  6. Списки в Python: основы
  7. Определение индекса элемента списка
  8. Именованные срезы в Python
  9. Именование столбцов в Python с pandas
  10. Создание функций с произвольным количеством аргументов
  11. Транспонирование 2D-массива с помощью zip
  12. Оператор Walrus: правильное использование
  13. Создание панели меню Tkinter
  14. Списковый компрехеншен.
  15. Функция zip() в Python
  16. Работа со строками в Python
  17. Форматирование строк в Python
  18. Асинхронный код в Python
  19. Оператор space-invader
  20. Переворот последовательности
  21. Запуск внешних программ с subprocess
  22. Функции в одну строку
  23. Декораторы в Python
  24. Обработка StopIteration в Python
  25. Оптимизация гиперпараметров в Python
  26. f-строки в формате строк
  27. Защита данных в Python
  28. Избегайте ошибку FileNotFoundError
  29. Сравнение def и lambda функций в Python
  30. Возврат нескольких значений
  31. JMESPath в Python
  32. Python Calendar Usage
  33. Методы Python для работы с данными
  34. Оформление кода по PEP 8
  35. Работа с контекстным менеджером Pool
  36. Логический оператор «and» в Python
  37. Визуализация пропусков данных
  38. Функция enumerate() в Python
  39. Поиск наиболее частого элемента
  40. Работа с дробями в Python
  41. Подчеркивание в REPL
  42. Метод get для словаря
  43. Создание уникального множества
  44. Форматирование строк с помощью f-строк
  45. Расширение информации об ошибке в Python
  46. Создание файла с проверкой ошибки

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