请参阅函数stop from locking在Python中定义的类
我想在函数中定义一个类(用于测试目的)并将一个值放入 函数变量:请参阅函数stop from locking在Python中定义的类,python,Python,我想在函数中定义一个类(用于测试目的)并将一个值放入 函数变量: def foo(): myvar = None class myclass: def run(self): myvar = 5 mm = myclass() mm.run() print(myvar) 以上打印内容None 除了global之外,是否有其他方法可以从类中访问myvar变量?正确的答案将打印5如果没有全局,则无法为当前范围之外的变量赋
def foo():
myvar = None
class myclass:
def run(self):
myvar = 5
mm = myclass()
mm.run()
print(myvar)
以上打印内容None
除了
global
之外,是否有其他方法可以从类中访问myvar
变量?正确的答案将打印5
如果没有全局
,则无法为当前范围之外的变量赋值。如果需要在类中持久化该值,则可以定义类变量。例如:
def foo():
class Class:
var_to_change = None
def run (self):
self.var_to_change = 5
print (Class.var_to_change)
instance = Class()
instance.run()
print (Class.var_to_change)
我还没有测试过上面的代码,但它在理论上应该可以工作。没有,这样做不是一个好的实践。在分配之前,不要尝试复杂的操作添加
非本地myvar
内部def run
。为什么要这样做?这违背了类的全部目的,即封装状态。如上所述,您可以使用非局部myvar
,这使得它分配给最近的封闭范围,在本例中是函数的局部范围。更合理地说,您应该让运行
函数返回myvar
的值,然后在caller@juanpa.arrivillaga这不是一个有用的答案。请先回答问题,然后提供您的意见。这也将打印None
。另外,在本例中,可以使用非本地
。我不知道有类似非本地
的东西。哇!