【发布时间】:2010-12-29 00:15:10
【问题描述】:
我的包有以下结构:
mobilescouter/
__init__.py #1
mapper/
__init__.py #2
lxml/
__init__.py #3
vehiclemapper.py
vehiclefeaturemapper.py
vehiclefeaturesetmapper.py
...
basemapper.py
vehicle/
__init__.py #4
vehicle.py
vehiclefeature.py
vehiclefeaturemapper.py
...
我不确定应该如何正确写入 __init__.py 文件。__init__.py #1 看起来像:
__all__ = ['mapper', 'vehicle']
import mapper
import vehicle
但是,例如 __init__.py #2 应该是什么样子?我的是:
__all__ = ['basemapper', 'lxml']
from basemaper import *
import lxml
什么时候应该使用__all__?
【问题讨论】:
-
请注意,在代码中使用 import * 通常是非常糟糕的做法,应尽可能避免。这方面好的用例很少,但确实很少见。
-
PSA:如果您有兴趣学习如何编写好的命名空间包(新类型的包),请查看此示例包:github.com/pypa/sample-namespace-packages