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