Overloading __init__() method results in error
本问题已经有最佳答案,请猛点这里访问。
我在一个类中有两个构造函数,但是当我调用其中一个(一个只有一个参数的构造函数-而不是一个有4个参数的构造函数)时,它会导致一个错误,说它需要比给定的1更多的参数。
课程如下:
1 2 3 4 5 6 7 8 | class Message: def __init__(self): self.data = None def __init__(self, type, length, data): self.type = type self.length = length self.data = data |
对它的调用(在这里我也得到了错误):
1 | msg = Message() |
问题可能出在哪里?难道它不能与C++相媲美吗?如果不是,我怎么还能以另一种方式得到同样的结果呢?
在一个类中不能有两个
您的代码有效地做的是重写第一个方法,这样它就永远不会被使用,然后您会得到一个错误,因为您没有提供足够的参数。
解决这个问题的一种方法是使用关键字参数提供默认值。这样,如果您创建没有值的
1 2 3 4 5 6 | class Message(object): def __init__(self, type=None, length=None, data=None): self.type = type self.length = length self.data = data |
python不能这样工作。使用此:
1 2 3 4 5 | class Message: def __init__(self, type=None, length=None, data=None): self.type = type self.length = length self.data = data |