我在一个类中有两个构造函数,但是当我调用其中一个(一个有一个参数 - 只有一个 - 而不是一个带有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 ++相媲美吗?如果没有,我怎么能以另一种方式获得相同的结果呢?
答案 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}}