重载__init __()方法会导致错误

时间:2015-05-12 15:23:25

标签: python oop

我在一个类中有两个构造函数,但是当我调用其中一个(一个有一个参数 - 只有一个 - 而不是一个带有4个参数的一个)时,它会导致错误,说它需要的参数多于1给出。

该课程如下:

class Message:
def __init__(self):
    self.data = None

def __init__(self, type, length, data):
    self.type = type
    self.length = length
    self.data = data

以及对它的调用(我也得到错误的地方):

msg = Message()

哪里可能是问题?它不能与C ++相媲美吗?如果没有,我怎么能以另一种方式获得相同的结果呢?

2 个答案:

答案 0 :(得分:1)

单个班级中不能有两个__init__方法。

你的代码有效地做了什么是覆盖第一个方法,所以它永远不会被使用,然后你得到一个错误,因为你还没有提供足够的参数。

解决此问题的一种方法是使用keyword-arguments提供默认值。这样,如果您创建没有值的Message对象,它将使用默认值。下面的示例使用None作为默认值,但它可能更复杂:

class Message(object):

    def __init__(self, type=None, length=None, data=None):
        self.type = type
        self.length = length
        self.data = data

答案 1 :(得分:0)

Python并不是那样工作的。使用此:

{{1}}