如何访问 python 中嵌套函数的变量?
How to access variable of a nested functions in python?
我需要访问在嵌套函数中设置的变量。我正在从另一个线程读取这个变量数据。在不违反任何范围的情况下获取数据的最佳方法是什么?
这是代码片段,
class main(object):
def sub_fun(self):
def inner_fun(self):
self.var = 10
inner_fun(self)
p = main().sub_fun()
现在如何访问 p
的 var
属性?
问题是 main.sub_fun
returns None
。有两个简单的解决方法:
只需在调用方法之前存储对您创建的项目的引用:
p = main()
p.sub_fun()
print(p.var)
这是我认为的最佳选择。
如果你真的想要单行版本工作,return self
from sub_fun
:
def sub_fun(self):
def inner_fun():
self.var = 10
inner_fun()
return self
print(main().sub_fun().var)
在这两种情况下都不需要将 self
传递给 inner_fun
。当找不到本地名称时,它将始终查看外部范围。 #2 显示了一个例子。
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)
如果 class 对象或父函数需要访问子嵌套函数内的变量,则应通过返回变量将其提升到外部作用域。否则变量的范围将只存在于所谓的子嵌套函数中。
我需要访问在嵌套函数中设置的变量。我正在从另一个线程读取这个变量数据。在不违反任何范围的情况下获取数据的最佳方法是什么?
这是代码片段,
class main(object):
def sub_fun(self):
def inner_fun(self):
self.var = 10
inner_fun(self)
p = main().sub_fun()
现在如何访问 p
的 var
属性?
问题是 main.sub_fun
returns None
。有两个简单的解决方法:
只需在调用方法之前存储对您创建的项目的引用:
p = main() p.sub_fun() print(p.var)
这是我认为的最佳选择。
如果你真的想要单行版本工作,return
self
fromsub_fun
:def sub_fun(self): def inner_fun(): self.var = 10 inner_fun() return self print(main().sub_fun().var)
在这两种情况下都不需要将 self
传递给 inner_fun
。当找不到本地名称时,它将始终查看外部范围。 #2 显示了一个例子。
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)
如果 class 对象或父函数需要访问子嵌套函数内的变量,则应通过返回变量将其提升到外部作用域。否则变量的范围将只存在于所谓的子嵌套函数中。