python中的构造函数链接

python中的构造函数链接,python,constructor,Python,Constructor,我班上有两个构造函数: def __init__(self): self(8) def __init__(self, size): self.buffer = [1] * size 其中,我希望第一个构造函数使用默认大小调用第二个构造函数。这在python中是可以实现的吗?您不能在python中定义多个初始值设定项(正如注释中所指出的,\uuuu init\uuuu),但您可以定义默认值,例如: def __init__(self, size=8): self.buffer =

我班上有两个构造函数:

def __init__(self):
  self(8)

def __init__(self, size):
  self.buffer = [1] * size

其中,我希望第一个构造函数使用默认大小调用第二个构造函数。这在python中是可以实现的吗?

您不能在python中定义多个初始值设定项(正如注释中所指出的,
\uuuu init\uuuu
),但您可以定义默认值,例如:

def __init__(self, size=8):
  self.buffer = [1] * size
在上面的代码中,默认情况下会创建大小为8的缓冲区,但如果指定了大小参数,则将使用该参数

例如,假设初始值设定项位于名为
Example
的类中。此调用将创建一个新的类实例,其缓冲区大小为8(默认值):

鉴于此调用将创建一个具有大小为10的缓冲区的新实例:

e = Example(10)
或者,您也可以这样调用构造函数:

e = Example(size=10)

不,不能在Python中重载方法。在这种情况下,您可以使用
size
参数的默认值:

def __init__(self, size=8):
  self.buffer = [1] * size

可能不是这样。Python类使用内部字典存储其方法和属性,具有相同名称的第二个方法覆盖第一个方法。 您可以为额外参数指定一个默认值来执行此操作

def __init__(self, size = 8):
  self.buffer = [1] * size

您没有两个构造函数,第二个构造函数覆盖第一个构造函数。
\uuuu init\uuuu
不是构造函数,而是初始值设定项。看,谢谢你指出这一点,内森。我已经相应地编辑了我的答案。
def __init__(self, size = 8):
  self.buffer = [1] * size