Как в функции обратиться к переменной на уровень выше? Python
Дана структура:
def a():
aaa = 0
.....
for i in range(3):
def b(c):
if c == 1:
aaa += 1
b(1)
...
def g(c):
if c == 1:
aaa += 1
g(1)
...
print(aaa)
a()
>>> 0
а нужно чтобы выводилось 2
Как можно сделать, чтобы функция b() перезаписывала переменную aaa в пространстве имен функции a(). global не сработало.
Ответы (2 шт):
Автор решения: Xander
→ Ссылка
Не надо использовать global и nonlocal без очень крайней нужды.
Используйте настоящиее классы:
class A:
def __init__(self):
self.aaa = 0
def b(self):
self.aaa += 1
def print_result(self):
print(self.aaa)
a = A()
a.b()
a.print_result() # Напечатает 1