__new__和__init__的区别
- __init__是当实例对象创建完成后被调用的, 然后设置对象属性的初始值
- __new__是在实例创建之前被调用的, 任务就是创建实例然后返回该实例, 是个静态方法
1. __new__方法: 类级别的方法
特性:
1. 是在类准备将自身实例化时调用, 并且至少需要传递一个cls, 此参数在实例化时由python解释器自动提供
2. 始终是类的静态方法, 即使静态方法装饰器
3. 必须要有返回值, 返回实例化出来的实例
2. __init__方法: 实例级别的方法
特性:
1. 有一个参数self, 该self参数就是__new__()返回的实例
2. __init__()在__new__()的基础上完成初始化动作, 不需要返回值
3. 若__new__()没有正确返回当前类cls的实例, 那__init__()将不会调用
4. 创建的每个实例都有自己的属性, 方便类中的实例方法调用