Когда я продлеваю родительский класс, который имеет **kwargs
, я не могу написать kwargs
в super(ParentClass, self).__init__(args, kwargs)
. Почему так?Почему я не могу использовать ** kwargs
Код следующим образом: Первоначально я думаю, что это правильно, но это не так.
class Parent(object):
def __init__(self, *args, **kwargs):
pass
class Child(Parent):
def __init__(self, *args, **kwargs):
super(Child, self).__init__(args, kwargs)
Фактически, под ним сразу после проверки.
class Parent(object):
def __init__(self, *args, **kwargs):
pass
class Child(Parent):
def __init__(self, *args, **kwargs):
super(Child, self).__init__(*args, **kwargs)
Когда мы ссылаемся на ARG как *args
, **kwargs
, как правило, мы используем непосредственно args
, kwargs
. Почему здесь, когда я пишу __init__
, я не могу этого сделать?
Когда * вызывает * другую функцию, вы хотите повторно применить эти переменные (ключевое слово) и использовать аналогичный синтаксис. Это называется распаковкой аргументов. –
Означает ли это, что мы не распаковываем в вызывающей функции? – evolever
код примера не мой правый код .i его изменить. – evolever