Python 这是一个构造函数还是一个方法

Python 这是一个构造函数还是一个方法,python,Python,python中的\uuuu init\uuuu是构造函数还是方法 它在某个地方说构造函数,在某个地方说方法,这让人很困惑。称它为方法是正确的。将其称为构造函数是不正确的,或者至多是不准确的 具体地说,这是一个挑战。它们也被称为特殊方法,“dunders”和其他一些名称 此特定方法用于定义对象的初始化行为。它实际上与构造函数并不相似,而且它甚至不是在新实例上调用的第一个方法 我们使用\uuuu init\uuuu设置已创建实例的状态。当我们使用语法A()创建类A的实例时,会自动调用它,这就是为什么

python中的
\uuuu init\uuuu
是构造函数还是方法


它在某个地方说构造函数,在某个地方说方法,这让人很困惑。

称它为方法是正确的。将其称为构造函数是不正确的,或者至多是不准确的

具体地说,这是一个挑战。它们也被称为特殊方法,“dunders”和其他一些名称

此特定方法用于定义对象的初始化行为。它实际上与构造函数并不相似,而且它甚至不是在新实例上调用的第一个方法


我们使用
\uuuu init\uuuu
设置已创建实例的状态。当我们使用语法
A()
创建类
A
的实例时,会自动调用它,这就是为什么有人会松散地将其称为“构造函数”。但是
\uuuuu init\uuuu
的职责与实例构造无关,实际上
\uuuuu new\uuuuuu
魔术方法在这方面更类似于构造函数

称之为方法是正确的。将其称为构造函数是不正确的,或者至多是不准确的

具体地说,这是一个挑战。它们也被称为特殊方法,“dunders”和其他一些名称

此特定方法用于定义对象的初始化行为。它实际上与构造函数并不相似,而且它甚至不是在新实例上调用的第一个方法


我们使用
\uuuu init\uuuu
设置已创建实例的状态。当我们使用语法
A()
创建类
A
的实例时,会自动调用它,这就是为什么有人会松散地将其称为“构造函数”。但是
\uuuuu init\uuuu
的职责与实例构造无关,实际上
\uuuuu new\uuuuuu
魔术方法在这方面更类似于构造函数

除了@wim的答案之外,值得注意的是,在调用
\uuuuu init\uuuu
时,对象已经被创建,即
\uu init\uuuu
不是构造函数。此外,
\uuuuu init\uuuu
方法是可选的:您不必定义一个。最后,一个
\uuuuu init\uuuu
方法只能通过约定首先定义,即它可以在任何其他方法之后定义

除了@wim的答案之外,值得注意的是,在调用
\uuuuu init\uuuu
时,对象已经被创建,即
\uu init\uuuu
不是构造函数。此外,
\uuuuu init\uuuu
方法是可选的:您不必定义一个。最后,一个
\uuuuu init\uuuu
方法只能通过约定首先定义,即它可以在任何其他方法之后定义

在《深入Python》中,它说“将其称为构造函数很有诱惑力,但不正确”,并解释了原因。在《深入Python》中,它说“将其称为构造函数很有诱惑力,但不正确”,并解释了原因。