python包中__init__.py文件的作用

时间:2023-03-08 21:06:14
python包中__init__.py文件的作用

python包中__init__.py文件的作用

__init__.py文件最常用的作用是标识一个文件夹是一个 python包。

__init__.py文件的另一个作用是定义模糊导入时要导入的内容。

当我们使用类似 from package import * 的导入语句的时候就是在使用模糊导入了,这时包的编写者就可以在__init__.py文件中定义 __all__ 来限制模糊导入的内容。

这样可以避免将一些只在包内使用的方法或变量暴露给用户。

__init__.py还可以简化导入过程,比如:

Django中的 models文件有时会有很多个表,并且每个表都有很多的属性和方法,这样就会使得 models文件变得很臃肿。

所以我们会把创建一个 models包,在这个包里每个表都单独用一个 py文件来保存,但是这样在导入的时候会有一些麻烦。

现在假设我们有一个 User表,按照上面我们的方法我们有一个 models文件夹,文件夹里有一个 User.py文件,这个文件里保存着我们的 User表的类。

这样当我们在其他文件导入 User类时的导入语句就是 from app.models.User import User 但是我们更习惯原来的写法 from app.models import User

这时我们就可以在 models里的 __init__.py文件中导入 User类,这样我们就可以使用原来的写法来导入User类了。

# models.__init__.py
from .User import User