一个文件中的变量在另一个文件中动态赋值 [Python]

问题描述 投票:0回答:1

我需要将一个文件中的变量动态分配到另一个文件中。这是通过执行以下操作来尝试的。在

file1.py

var1 = 1
var2 = 2

然后在

file2.py

 import file1

 Class File2
      def assign2(self, varName, val)
           ...
           (do stuff)
           ...
           setattr(file1, varName, val)
           print(str(getattr(file1, varName))) -> 3, 4

      def assign1(self)
           self.assign2("var1", 3)
           self.assign2("var2", 4)
           print(str(getattr(file1, "var1"))) -> 1
           print(str(getattr(file1, "var2"))) -> 2

如果我只是在

file1.var1 = 3
中的任何位置调用
file2.py
,则会发生更新,但由于某种原因,使用
setattr
进行动态分配不会发生更新。如有任何帮助,我们将不胜感激。

python dynamic variable-assignment
1个回答
0
投票

虽然很危险,但我发现

exec()
有效:

def assign2(self, varName, val)
       if isinstance(val, (list, np.ndarray, tuple)):
            br = "[]"
            if isinstance(val, tuple):
                 br = "()"
            s = f"file1.{varName} = " + br[0]
            for i in range(len(val)):
                 s += f"{val[i]},"
            s += br[1]
            exec(s)
       else:
            exec(f"file1.{varName} = {val}")
© www.soinside.com 2019 - 2024. All rights reserved.