从Python中类内的其他文件导入全局变量[关闭]

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

我的全局变量有问题,需要在函数中设置(在我的示例中为 f1)并在第二个函数(f2)中按原样恢复。全局值由f0设置,不可编辑。我必须用 f0 发送全局 n 值

在我的测试中,我在单个文件中进行了

class mytest():    
    def f1(value):
        global n
        n = value
        print('test f1 : '+n)

    def f2():
        print('test f2 : '+n)


def f0():
    mytest.f1("5")
    mytest.f2()
f0()

f1 和 f2 的结果为 5,正如预期的那样。 现在我分成2个文件(为了重现我的需要。这里没有选择,它必须被拆分)

文件1

def f0():
    file2.mytest.f1("5")

文件2

class mytest:    
    def f1(value):
        global n
        n = value
        print('test f1 : '+n)

    def f2():
        print('test f2 : '+n)


    f2()

错误是:名称“n”未定义

f1 始终由应用程序首先运行,然后调用 f2 我需要 f2 (以及我后面需要的 fX 函数)来保留 f1 中的“n”值 我读过类似的问题 从Python函数内部访问全局变量

如何在Python中访问类内的全局变量

但这些并不能回答我的问题 谢谢你

python
1个回答
0
投票

你不能像Python中的对象一样使用文件,你必须导入类才能在你的file1中使用它:

from .file2 import mytest

之后您可以在您的文件中使用它1

def f0():
    mytest.f1("5")

但是它会抛出错误,因为在类构造函数中,您在 f1() 之前调用 f2(),因此 n 没有实例化。

  Traceback (most recent call last):
  File "C:\Dev\tmp\file1.py", line 1, in <module>
    from file2 import mytest
  File "C:\Dev\tmp\file2.py", line 1, in <module>
    class mytest:
  File "C:\Dev\tmp\file2.py", line 10, in mytest
    f2()
  File "C:\Dev\tmp\file2.py", line 8, in f2
    print("test f2 : " + n)
                         ^
NameError: name 'n' is not defined

顺便说一句,你不应该在类构造函数中调用函数。

我不明白为什么需要全局变量,你能解释一下吗?

© www.soinside.com 2019 - 2024. All rights reserved.