And*_* II 116 python module packages global-variables init
我想定义一个应该在包的所有子模块中可用的常量.我认为最好的地方是在__init__.pyroot包的文件中.但我不知道该怎么做.假设我有几个子包,每个子包都有几个模块.如何从这些模块中访问该变量?
当然,如果这是完全错误的,并且有更好的选择,我想知道它.
Jas*_*mbs 178
你应该能够把它们放进去__init__.py.这是一直这样做的.
mypackage/__init__.py:
MY_CONSTANT = 42
Run Code Online (Sandbox Code Playgroud)
mypackage/mymodule.py:
from mypackage import MY_CONSTANT
print "my constant is", MY_CONSTANT
Run Code Online (Sandbox Code Playgroud)
然后,导入mymodule:
>>> from mypackage import mymodule
my constant is 42
Run Code Online (Sandbox Code Playgroud)
尽管如此,如果你确实有常量,那么将它们放在一个单独的模块(constants.py,config.py,...)中是合理的(可能是最佳实践)然后如果你想在它们的包名称空间中输入它们,那么他们.
mypackage/__init__.py:
from mypackage.constants import *
Run Code Online (Sandbox Code Playgroud)
但是,这并不会自动包含程序包模块名称空间中的常量.程序包中的每个模块仍然必须显式地从mypackage或从中导入常量mypackage.constants.
Fer*_*yer 30
你不能这样做.您必须明确地将常量导入每个单独模块的命名空间.实现此目的的最佳方法是在"config"模块中定义常量并将其导入到您需要的任何位置:
# mypackage/config.py
MY_CONST = 17
# mypackage/main.py
from mypackage.config import *
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
70893 次 |
| 最近记录: |