假设我在一个名为mymod
的目录中有三个文件。这三个文件是__init__.py
,sm1.py
,sm2.py
。模块的内容包括:
__init__.py
import sm1
import sm2
global _defaults
sm1.py
sm2.py
def printdefs():
print _defaults.color
print _defaults.number
所以,我要做的是在子模块sm1
内设置一个名为_defaults
的类,该类可以从模块或子模块中的任何其他位置访问,这样子模块{
import mymod
mymod.sm2.printdefs()
我得到这个错误:
NameError: global name '_defaults' is not defined
有什么建议吗(以及为什么这不起作用?)在
备注:
我想要一个全局变量而不是仅仅设置一些要导入的变量,是因为我希望用户能够这样做:
>>> import mymod
>>> mymod.sm2.printdefs()
'blue'
10
>>> mymod._defaults.color='red'
>>> mymod.sm2.printdefs()
'red'
10
所以,处理全局变量是我唯一认为可以这样做的。在
谢谢。在
global
不是你怎么做的。sm1
应该只设置变量,然后所有其他模块都应该导入它。在短信1.py:
短信2.py
^{pr2}$但我真的不知道为什么你有一个全局而不是某种工厂方法或类。如果你能提供更多关于实际项目的细节,那会很有帮助。在
相关问题 更多 >
编程相关推荐