Переменные (свойства / атрибуты) класса
Область видимости:
Local -> Enclosing -> Global -> Builtins
Переменная name
в вызываемом методе print_name
будет искаться в начале локально (Local), потом во вложенных функциях (Enclosing) (их нет в print_name
) потом глобально (Global) - и тут, как раз находит name = "Ivan"
[!warning] Использование nonlocal Это поведение можно избежать, если обозначить переменную, как nonlocal
[!warning] Применяется только во вложенных функциях nonlocal может применяться только в функциях, имеющих вложенную область видимости.
Вы получаете вложенную область видимости только тогда, когда определяете свою функцию внутри другой функции
Last updated