我是python的新手,尝试在导入的模块中更新变量,例如x,然后尝试在其他变量(例如y)中使用更新的变量x,但是y使用x的旧值而不是新值。请帮助提供一些指示,以使其正常工作!
我的意图是使用py文件列出所有可以在其他py文件中使用的全局变量。我可以更新并使用全局变量,但不确定如何在其他变量中使用更新的全局变量。
a.py:
var1 = 0
var2 = var1 + 1
b.py:
import a
def update_var():
a.var1 = 10
print("Updated var1 is {}".format(a.var1))
print("var2 is {}".format(a.var2))
if __name__ == "__main__":
update_var()
输出:
Updated var1 is 10
var2 is 1
预期产量:
由于我将var1更新为10,因此我希望在var2中使用更新后的值
Updated var1 is 10
var2 is 11
根据@GPhilo的输入和我的个人经验,我提出了以下可行的解决方案,猜想解决方案2更具Pythonic。
解决方案1:
a.py:
class Globals:
def __init__(self, value):
self.var1 = value
self.var2 = self.var1 + 1
b.py:
from a import Globals
def update_var():
globals_instance = Globals(10)
print("Updated var1 is {}".format(globals_instance.var1))
print("var2 is {}".format(globals_instance.var2))
if __name__ == "__main__":
update_var()
输出:
Updated var1 is 10
var2 is 11
解决方案2:
如下更改a.py的实现”
a.py:
class Globals:
def __init__(self, value):
self._var1 = value
self.var2 = self._var1 + 1
@property
def var1(self):
return self._var1
@var1.setter
def var1(self, value):
self._var1 = value
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句