`__init__.py` 模块 与 `__init__`构造方
2022-03-02 本文已影响0人
QXPLUS
__init__.py
模块
-
__init__.py
模块的作用
- 用于标识一个包(包的定义就是包含init.py的文件夹。如果没有init.py,那么就是普通的文件夹)
- 定义包和模块的初始化操作
- 定义
__all__
用来模糊导入(from package-name import *
)
-
用于批量导入包中的模块
在导入一个包的时候,实际上是导入它的__init__
文件, 所以 我们可以在__init__
文件中批量导入我们所需要的包 -
导入自定义模块
Python 运行环境在查找库文件时是对 sys.path 列表进行遍历,
如果我们想在运行环境中注册新的类库,主要有以下2种方法: -
在sys.path列表中添加新的路径。
-
将库文件复制到sys.path列表中的目录里(如site-packages目录)。
-
全部导出定义过的模块
__all__
是在from package-name import *
这语句使用的,全部导出定义过的模块。
- 导入自定义模块
import sys
sys.path.append("包所在的路径")
import "自定义包"
总结:
-
__init__.py
控制着包的导入行为。包可以像目录一样,有多个层级,当然每个层级都可存在init.py,这样就会形成多层级的嵌套包了。 -
__init__.py
为空仅仅是把这个包导入,不会导入包中的模块 -
__all__
在__init__.py
文件中,定义一个__all__
变量,它控制着from 包名 import *
时导入的模块
但只想使用该包下的某一模块,可以在init.py文件里通过__ all__= [ '模块名'] 添加指定的模块 -
__init__.py
还如类里的构造函数一样,起着初始化的作用。
__init__
构造方法
什么是构造方法
- 在创建类时, 可手动添加一个
__init__()
方法,称为构造方法,这是一个实例方法 - 构造方法用于创建实例对象时使用,每当创建一个类的实例对象时,Python 解释器都会自动调用它
- 一般用来初始化对象的某些属性
__init__
构造方法的作用是在创建一个类的对象时,对对象进行一些初始化操作,在创建对象的时候会被自动调用。
构造方法语法格式
class 类:
def __init__(self, 参数):
self.属性 = 参数 ...
对象 = 类(参数)
类的默认构造方法
__init__()
构造方法并不是必写
假设不写,Python 也会自动添加一个仅包含self
参数的__init__()
构造方法,这又称为类的默认构造方法
属性是变量,方法是函数
函数使用变量就是面向对象
self.var
是为了使变量能在类中跨函数使用。
不写self.var
, python只能在当前函数中找变量。
写上self.var
, python会在当前类中找变量
__init__
构造方法 和 __new__
方法
new 构造器
-
__new__
和__init__
一样都是类的构造器 __new__
在__init__
之前执行,即使没有显示定义-
__new__
必须有返回对象,这个对象就是该类的实例,或者父类的实例(该类继承了一个类),并且是__new__
出来的实例,这个实例的就是self,也就是该类的实例化对象。 -
__new__
生成的self
传给__init__
,如果没有正确返回实例,__init__
将不会执行。 -
__new__
可以自定义 -
__new__
是类方法,需要显示的传入类cls作为第一个参数,至少要有这个参数 - 新式类中才有
__new__
-
__new__
和in__init__
t共用参数,也就是说二者参数形式要一致