У меня есть подкласс другого класса. Оба имеют одинаковую подпись для метода __init__
. Мой абонент предоставляет все необходимые аргументы. Тем не менее, я все еще получаю ошибку отсутствующего аргумента.
Я пробовал разные способы вызова метода __init__
суперкласса.
Функция инициализации базового класса (импортирована из другого файла):
class Gerrit:
connections = {
'consumer': MyGerritClient(host='gerrit.consumer.com', username=getpass.getuser()),
'b2b': MyGerritClient(host='gerrit.b2b.com', username=getpass.getuser())
}
def __init__(self, segment, rev_id, branches):
print("TRACE: Gerrit::__init__()")
self.branches = branches
self.review = None # Type: GerritChange
self.gerrit_client = self.connections[segment]
for review_candidate in self.gerrit_client.query(rev_id):
if self.branch_is_valid(review_candidate.branch) and review_candidate.status != 'ABANDONED':
self.review = review_candidate
self.approved = False
self.rev_id = rev_id
self.merged = False
Детский класс __init__
Метод:
class CvGerrit(Gerrit):
def __init__(self, segment, rev_id, branches):
Gerrit.__init__(segment, rev_id, branches)
Caller:
review = CvGerrit(segment='consumer', rev_id=gerrit_id, branches=my_branches)
Я ожидаю, что смогу создать дочерний класс, CvGerrit
. Вместо этого я получаю отсутствующую ошибку позиционного аргумента. Имеет ли значение, что другие применения базового класса принимают list
для аргумента ветвей, в то время как вызывающая сторона передает dict
? Это преднамеренная и вся причина подкласса в том, что я могу обрабатывать эту коллекцию по-разному, используя переопределенную функцию в дочернем элементе.