链接在python中的构造函数

时间:2011-12-04 16:33:42

标签: python constructor

我班上有两个构造函数:

def __init__(self):
  self(8)

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

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

3 个答案:

答案 0 :(得分:9)

您无法在Python中定义多个初始值设定项(如注释__init__ is not really a constructor中所述),但您可以定义默认值,例如:

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

在上面的代码中,默认情况下会创建一个大小为8的缓冲区,但如果指定了size参数,则会使用该参数。

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

e = Example()

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

e = Example(10)

或者,您也可以像这样调用构造函数:

e = Example(size=10)

答案 1 :(得分:5)

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

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

答案 2 :(得分:1)

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

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