Python 全局变量在导入时在类内部不同



这显然是某种范围或导入问题,但我无法弄清楚。 像这样:

classes.py
class Thing(object):
    @property
    def global_test(self):
        return the_global

然后。。。

test.py
from classes import Thing
global the_global
the_global = 'foobar'
t = Thing()
t.global_test

:(

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "classes.py", line 4, in global_test
    return the_global
NameError: global name 'the_global' is not defined

任何帮助都会很棒!

Python中的"global"是模块中顶层可访问的变量。

此消息:

NameError: global name 'the_global' is not defined

classes.py 中引发意味着您的 classes.py 文件中没有全局命名的the_global

Python 模块不共享全局变量。(好吧,不是以您希望他们分享的方式)

"全局"变量仅在模块范围内将变量定义为全局变量使用的地方。您不能在此处使用"global"来访问模块外部的变量"类"模块的范围。

如果你必须处理全局定义,这里的正确解决方案是:移动"全局"变量到专用模块中,并使用正确的导入语句导入变量进入您的"类"模块。

myvars.py:

MY_GLOBAL_VAR = 42

classes.py:

import myvars
class Thing():
   def method(self):
       return myvars.MY_GLOBAL_VAR # if you need such a weird pattern for whatever reason

相关内容

  • 没有找到相关文章

最新更新