我听说Python中的
__init__
函数不是构造函数,而是初始化函数。实际上,__new__
函数才是构造函数。它们之间的区别在于__init__
函数在对象创建后调用,而__new__
函数则在其之前调用。我说的对吗?你能更好地解释一下它们之间的区别,以及为什么我们需要同时使用__new__
和__init__
吗?
__init__
是其他面向对象编程语言(尤其是Java和C++)通常称为“构造函数”的直接等价物。据我所知,这些语言实际上没有任何直接等价于__new__
的东西。但可能正是因为“构造函数”等效物并不真正构造任何东西(C++或Java的“构造函数”也是如此),Python倾向于将这两者都称为实际方法名称,而不是称之为“构造函数”中的任何一个。 - lvc