__init__.py
文件:使用import module
方式引入包的时候等价于执行__init__.py
文件。限制使用import
语句的时候引入的文件
自定义包的目录结构如下:
|-- customer module
|-- module1
|-- file1.py
|-- file2.py
|-- __init__.py(1)
|-- module2
|-- file3.py
|-- file4.py
|-- __init__.py(2)
|-- module3
|-- file5.py
|-- file6.py
|-- __init__.py(3
|-- __init__.py(4)
**__init__.py(4)**文件:
from . import module1
from . import module2
from . import module3
__init__.py(1)文件:
from . import file1
from . import file2
__init__.py(2)文件:
from . import file3
from . import file4
__init__.py(3)文件:
from . import file5
from . import file6
当使用语句import customermodule
的时候导入顺序如下:
|-- 执行__init__.py(4)
|-- 执行__init__.py(1)
|-- import file1.py
|-- import file2.py
|-- 执行__init__.py(2)
|-- import file3.py
|-- import file4.py
|-- 执行__init__.py(3)
|-- import file5.py
|-- import file6.py
在__init__.py:文件中也可以使用__all__
来限制import customermodule
语句和from customermodule import *
语句引用的文件。
例如将**__init__.py(4)**文件:文件修改:
__all__ = ["module1", "module2"]
import customermodule
不会引入module3模块。from customermodule import *
同样不会引入module3模块。
注:
-
__all__
不能阻止以下方式引入module3模块内容。-
import customermodule.module3
。 -
from customermodule.module3 import file6
。
-
-
__all__
如果写在一个非**__init__**文件中可以限制注意事项1中的两种方式引入对外隐藏的函数、属性、类等信息。 -
__name__
属性定义了从根目录开始该文件的全路径。(默认系统定义) -
__package__
属性定义了文件的父对象的全路径。(默认系统定义)
这样就就可以将自己的模块添加到项目中。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)