Python __init__与__new__的区别
在 Python 中,__init__ 和 __new__ 是两个特殊的方法,用于创建和初始化对象,但它们的作用和执行时机有所不同。
__new__ 方法
__new__是在一个对象实例化的时候调用的第一个方法。- 它的任务是创建一个实例并返回它,是一个类级别的方法(classmethod)。
__new__的第一个参数是类本身(cls),接下来的参数会传递给__init__方法。- 主要用于控制对象的创建过程,在一些特殊情况下可能会被重写,比如实现单例模式。
- 如果
__new__方法不返回对象,则__init__方法不会被调用。
__init__ 方法
__init__是在对象被创建后调用的初始化方法。- 它的任务是初始化实例对象,在创建对象后立即调用,用于设置对象的初始状态。
__init__方法不返回任何值,它只是对新创建的实例对象进行初始化。__init__方法是一个实例级别的方法,接受的第一个参数是实例对象本身(self)。