这显然是某种范围或进口问题,但我无法弄清楚。类似的东西:
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
任何帮助都会很棒!
答案 0 :(得分:3)
此消息:
NameError: global name 'the_global' is not defined
在classes.py
内提出表示您的the_global
文件中没有全局名为classes.py
的内容。
Python模块不共享全局变量。 (好吧,不是你希望他们分享的方式)
答案 1 :(得分:0)
'全局'变量仅在模块范围内将变量定义为全局变量 它在哪里使用。您不能在此处使用“全局”来访问模块外部的变量 “类”模块的范围。
如果您必须处理全局定义,那么这里是正确的解决方案:移动“全局” 将变量放入专用模块并使用适当的import语句导入变量 进入你的“课堂”模块。
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