从整个modu中可用的子模块创建全局变量

2024-06-08 01:35:46 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我在一个名为mymod的目录中有三个文件。这三个文件是__init__.pysm1.pysm2.py。模块的内容包括:

__init__.py

import sm1
import sm2
global _defaults

sm1.py

^{pr2}$

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

所以,处理全局变量是我唯一认为可以这样做的。在

谢谢。在


Tags: 模块文件pyimportinitredglobalcolor
1条回答
网友
1楼 · 发布于 2024-06-08 01:35:46

global不是你怎么做的。sm1应该只设置变量,然后所有其他模块都应该导入它。在

短信1.py:

class get_defs:
    color='blue'
    number=10 
_defaults = get_defs()

短信2.py

^{pr2}$

但我真的不知道为什么你有一个全局而不是某种工厂方法或类。如果你能提供更多关于实际项目的细节,那会很有帮助。在

相关问题 更多 >

    热门问题