跳到主要内容

__new__和__init__的区别?

参考答案:

__new____init__是Python中类的两个特殊方法,它们在创建对象时起着不同的作用。

__new__是一个静态方法,用于创建并返回一个新对象。当你使用类名()来创建一个新对象时,Python首先会调用__new__方法来分配内存并返回一个新的对象实例。__new__方法通常不需要我们手动定义,除非你想自定义对象的创建过程,例如实现单例模式、控制对象的创建数量等。

__init__是一个实例方法,用于初始化新创建的对象。在__new__方法创建并返回对象后,Python会调用__init__方法来设置对象的属性、执行一些必要的初始化操作等。__init__方法是我们经常需要手动定义的方法,用于为新创建的对象设置初始状态。

总结一下,__new____init__的主要区别在于:

  • __new__负责创建对象并返回对象实例,是一个静态方法。
  • __init__负责初始化新创建的对象,是一个实例方法。

在大多数情况下,我们只需要关注__init__方法,因为Python会自动调用__new__方法来创建对象。但是,在某些特殊情况下,我们可能需要自定义对象的创建过程,这时就需要手动定义__new__方法。