我正在将一些单文件Python模块重构为多文件包,并且反复遇到相同的问题模式:我有属于包的公共接口的对象,但包的子模块也必须在内部使用这些对象
mypackage/
__init__.py # <--- Contains object 'cssURL'
views.py # <--- Needs to use object 'cssURL'
在这种情况下,mypackage
的客户机访问mypackage.cssURL
是很重要的。但是,我的子模块views.py
也需要它,但是无法访问__init__.py
的内容。当然,我可以创建另一个子模块,如下所示:
mypackage/
__init__.py
views.py
style.py # <--- New home for 'cssURL'
但是,如果我每次都这样做,子模块的数目似乎会成倍增加。此外,客户机现在必须将mypackage.cssURL
称为mypackage.style.cssURL
,否则我必须在__init__.py
中创建一个同义词,如下所示:
import style
cssURL = style.cssURL
我想我做错了什么。有没有更好的方法来处理同时属于公共接口和内部使用的包成员
据我所知,首选的方法是在} module
__init__.py
中用“from .style import cssURL
”创建一个“同义词”;参见the source for the ^{我的结构如下:
如果同一个包中的其他模块需要它们,我不会在
__init__.py
中定义名称;只需在那里创建一个别名供外部使用者使用您可以将当前包称为
.
:有关详细信息,请参见here
相关问题 更多 >
编程相关推荐