new
- 是静态方法
- 用于创建实例
- 第一个参数是类型并且(通常)返回该类型的新实例
new() 的实际目的主要是允许不可变类型的子类 (例如 int, str 或 tuple) 定制实例创建过程。它也常会在自定义元类中被重载以便定制类创建过程。
init
- 是实例方法
- 用于初始化实例
- 第一个参数是实例本身,不返回任何东西
Python 先通过构造器__new__() 去分配内存,并创建了实例,再通过__init__去初始化实例。
new() 不一定要返回实例,它可以返回任何东西。但是如果它不返回实例的,接下来 Python 也不会自动初始化实例