我可以在同一目录中运行API.py,但不能运行APP.py。错误为“ NameError:未定义名称'a'”。 global()真的是全球性的吗?
API.py:
class Entity():
def __init__(self,name,value):
globals()[name]=value
if __name__ == '__main__':
Entity('a',1)
print(a)
APP.py
from API import Entity
if __name__ == '__main__':
Entity('a',1)
print(a)
答案 0 :(得分:1)
全局只能由模块中的每个函数访问,而不能由其他导入的模块中的函数访问。
与其让Entity直接设置全局变量,不如让它返回值,然后在APP.py中编写代码以全局设置值。
另一种方法是将全局变量放在其他人导入的共享模块中,然后每个模块都可以对其进行读/写访问。