class main(object):
def sub_fun(self):
def inner_fun(self):
self.var = 10
p = main()
Вы не можете получить доступ к переменной вложенной функции, потому что она закрыта и доступна только непосредственному родителю. var доступен только для inner_fun . Ниже приведена другая реализация.
class main(object):
def outer_function(self):
def inner_function(self):
self.x = 10
return self.x
out = inner_function(self) # Accessing the inner function
return out
p = main()
q = p.outer_function()
print(q)
Если для объекта класса или родительской функции требуется доступ к переменной внутри дочерней вложенной функции, то переменная должна быть выведена во внешнюю область путем ее возврата. В противном случае область действия переменной будет находиться только в так называемой дочерней вложенной функции.