__init__.py 文件的作用是将文件夹变为一个Python模块,Python 中的每个模块的包中,都有__init__.py 文件。
通常__init__.py 文件为空,但是我们还可以为它增加其他的功能。
我们在导入一个包时,实际上是执行它的__init__.py文件。这样我们可以在__init__.py文件中批量导入我们所需要的模块,而不再需要一个一个的导入。
# package # __init__.py import re import urllib import sys import os # a.py import package print(package.re, package.urllib, package.sys, package.os)
注意这里访问__init__.py文件中的引用文件,需要加上包名。
__init__.py中还有一个重要的变量,__all__, 它用来将模块全部导入。
# __init__.py __all__ = ['os', 'sys', 're', 'urllib'] # a.py from package import *
这时就会把注册在__init__.py文件中__all__列表中的模块和包导入到当前文件中来。
如果没有__all__的话,是没法用from pacakge import * 这种写法的。因为这种写法其实做的是将__init__.py文件中定义的__all__变量的包导入进来,并不是绝对的该目录下的都导入,是由__all__定义的
__init__文件同样也是一个python文件,在里面也可以写python类或函数,但是不建议这么写,尽量保证__init__.py足够轻
#__init__.py __all__ = ["Pack1Class","Pack1Class1","Init_AA"] class Init_AA: def __init__(self,name): self.name = name def Greeting(self): print("Hello ",self.name)
在测试中调用
from Root.Pack1 import * b = Init_AA("test") b.Greeting()