我可以将一个类定义放入__init__.py吗?

时间:2017-12-10 16:33:05

标签: python

我有一个类似于this的类结构的包。 Base类是几个单独层次结构的典型简单父类。

我的包布局如下:

__init__.py (empty)
base.py
ab.py
cd.py
ef.py

Base类放入__init__.py而不是仅为一个类创建单独的模块,这是一个好主意还是一个好习惯?通过这种方式,我不需要每次都在模块中导入它。

1 个答案:

答案 0 :(得分:7)

将它留在base.py中是完全正确且更灵活的方法。另请注意, __init__.py的主要用途是初始化Python包而不是保留内容。

为避免每次可以编写类似

的内容而导入模块
# in __init__.py
from base import Base

进入__init__.py,以便您可以直接从my_package导入Base

# some script
from my_package import Base

这是一种在包级别提供对象的常用方法

有关__init__.py文件的详细信息,请查看documentation