65 python module packages initialization
我很难理解__init__.py我项目中python 文件的使用场景或设计目标.
假设我有'model'目录(引用为包),其中包含以下文件
__init__.pymeta.pysolrmodel.pymongomodel.pysamodel.py我发现了两种使用方式__init__.py:
我有共同的需要被用于定义solrmodel.py,mongomodel.py,samodel.py.我可以__init__.py用作所有*model.py类的基本/公共定义吗?这意味着我必须导入model/__init__.py.
或者,它__init__.py应该自己导入solrmodel.py,mongomodel.py,samodel.py的定义,它允许轻松导入类或函数,如下所示:
# file: __init__.py
from mongomodel import *
from solrmodel import *
from samodel import *
Run Code Online (Sandbox Code Playgroud)
(我知道import *不建议这样做,我只是将它作为惯例使用)
我无法在上述两种情况之间做出决定.是否有更多的使用场景,__init__.py您能解释一下使用情况吗?
Ale*_*lli 50
__init__.py我写的绝大多数文件都是空的,因为许多软件包没有任何初始化的东西.
其中,我可能要初始化一个例子是,当在包加载时间我想在一组数据一劳永逸阅读(来自文件的数据块,或网页,说的) -在这种情况下,它多漂亮到将该读取放在包中的私有函数中__init__.py而不是单独的"初始化模块",并从包中的每个单个实模块中冗余地导入该模块(无用的重复且容易出错:这显然是依赖于语言的情况)保证的包__init__.py 是在包中的任何模块之前加载一次显然要更Python!).
对于其他具体和权威的意见表达,请查看作为Python标准库一部分的各种包中采用的不同方法.
Ign*_*ams 23
__init__.py导入包中的模块时导入的内容.
你忽略了第三个场景,即将公共部分放在一个单独的模块中,然后让其他模块导入它,留下__init__.py将在包外使用的东西.这是我经常遵循的做法.
| 归档时间: |
|
| 查看次数: |
40411 次 |
| 最近记录: |