假设我有一个名为“mymod”的目录,里面有三个文件:
我收到了这个错误:
__init__.py
、sm1.py
和sm2.py
。模块的内容如下:
__init__.py
import sm1
import sm2
global _defaults
sm1.py
global _defaults
class get_defs:
color='blue'
number=10
_defaults = get_defs()
sm2.py
def printdefs():
print _defaults.color
print _defaults.number
所以,我想做的是在子模块sm1
中设置一个名为_defaults
的类,可以从模块或子模块的任何其他地方访问,以便子模块sm2
也可以访问和打印该类。我认为这个设置会起作用,但是当我运行时,发现并不起作用。
import mymod
mymod.sm2.printdefs()
我收到了这个错误:
NameError: global name '_defaults' is not defined
有什么建议可以做到这一点(以及为什么这不起作用)?
P.S.:
我希望使用全局变量而不是只设置某个要导入的变量的原因是我希望用户能够这样做:
>>> import mymod
>>> mymod.sm2.printdefs()
'blue'
10
>>> mymod._defaults.color='red'
>>> mymod.sm2.printdefs()
'red'
10
因此,使用全局变量是我认为唯一能够像这样工作的方法。
谢谢。