python中的__new__ 和 __init__

81 阅读1分钟

new

  • 是静态方法
  • 用于创建实例
  • 第一个参数是类型并且(通常)返回该类型的新实例

new() 的实际目的主要是允许不可变类型的子类 (例如 int, str 或 tuple) 定制实例创建过程。它也常会在自定义元类中被重载以便定制类创建过程。

init

  • 是实例方法
  • 用于初始化实例
  • 第一个参数是实例本身,不返回任何东西

Python 先通过构造器__new__() 去分配内存,并创建了实例,再通过__init__去初始化实例。

new() 不一定要返回实例,它可以返回任何东西。但是如果它不返回实例的,接下来 Python 也不会自动初始化实例