python中init编写from * import * 简化包的引用

_init_ :  在调用该包时,会执行包中的init文件内容

如图,Commonly包下有三个经常被调用的文件

若要在其他外部文件(test)中调用Commonly中三个文件中的类,则需要在test中编写引用:   

from Commonly.Param_url import Param
from Commonly.Response import Response
from Commonly.Request import Request

若在多个文件中都引用Commonly中三个文件中的类,则需在每个文件中如此编写相较麻烦

解决方法

可在Commonly中的init文件中编写

# from Commonly.Param_url import Param
#from Commonly.Response import Response
from Commonly.Request import Request
from .Response import Response  # 表示在当前包下寻找Response
from .Param_url import Param

#__all__=['Param', 'Response', 'Request']   # 使用__all__写入要调用的模块名, 在其他文件调用时需写:模块名.(类名).方法名【若无类则:模块名.方法名)

则在其他文件(test)中调用时可如下写即可:

from Commonly import Request, Param, Response

或者# from Commonly import *

_init_的作用:

1. Python中package的标识,不能删除

2. 定义__all__用来模糊导入或者定义from * import * 引用包

3. 编写Python代码(不建议在__init__中写python模块,可以在包中在创建另外的模块来写,尽量保证__init__.py简单)

原文地址:https://www.cnblogs.com/byy521/p/15205113.html