我有一个类似于这个的类结构包。
Base
类是几个独立层次结构的典型简单父类。
我的包布局如下:
__init__.py (empty)
base.py
ab.py
cd.py
ef.py
把Base
类放到__init__.py
里而不是为了一个类创建单独的模块,这是一个好主意或好的实践吗?这样一来,我就不需要在每个模块中导入它。
我有一个类似于这个的类结构包。
Base
类是几个独立层次结构的典型简单父类。
我的包布局如下:
__init__.py (empty)
base.py
ab.py
cd.py
ef.py
把Base
类放到__init__.py
里而不是为了一个类创建单独的模块,这是一个好主意或好的实践吗?这样一来,我就不需要在每个模块中导入它。
将它放在base.py
中是完全可以的,这样做更加灵活。还要注意__init__.py的主要用途是初始化Python包,而不是保存内容。
为避免每次导入模块都要写一遍,可以编写类似于以下代码:
# in __init__.py
from .base import Base
将Base
类添加到__init__.py
中,这样你就可以直接从my_package
导入它:
# some script
from my_package import Base
这是一种常见的方法,使对象在包级别上可用。
要了解有关__init__.py
文件的更多信息,请查看文档。
__init__.py
里面有什么缺点? - user42723module
类型表示,甚至不是子类型。 - Karl Knechtelcollections
包的__init__.py
中定义了一堆东西。这是一种简单的处理方式,因为collections
最初只是一个简单的模块,后来才添加了collections.abc
。同样,json
在__init__.py
中定义了基于函数的主要接口,同时将支持类放到了单独的文件中。 - Karl Knechtel