У меня есть два конструктора в одном классе, но когда я вызываю один из них (один с одним аргументом - только сам, а не один с 4 аргументами), это приводит к ошибке , заявив, что он ожидает больше аргументов, чем 1.Метод перегрузки __init __() приводит к ошибке
класс следующим образом:
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++? Если нет, как я могу получить тот же результат по-другому?
Python не допускает такого поведения - второй '__init__' ** полностью заменяет ** первый. * «Разве это не сравнимо с C++?» * - только в той мере, в какой вы можете сказать, что это не похоже на C++! – jonrsharpe
Технически, '__init__' не является конструктором, а инициализатором. Он получает уже построенный объект в качестве аргумента. '__new__' является конструктором. – chepner