При инициализации нескольких родительских классов один из конструкторов не вызывается
Пытаюсь инициализировать родительские классы, но в конструктор класса A даже не заходит.
class A:
def __init__(self, arg, **kwargs):
print("A enter")
print("A leave")
class B(list, A):
def __init__(self, arg, *content, **kwargs):
print("B enter")
super(B, self).__init__(arg=arg, *content, **kwargs)
print("B leave")
На выходе получаю:
B enter
B leave
Хотелось бы, чтобы родительский класс A инициализировался аргументами arg и **kwargs, а класс list аргументом *content
Ответы (2 шт):
Автор решения: S. Nick
→ Ссылка
Попробуйте так:
class A:
def __init__(self, arg, **kwargs):
self.arg = arg
self._dict = kwargs
print("A enter --->", arg, kwargs)
print("A leave --->", self._dict)
class B(A, list):
def __init__(self, arg, *content, **kwargs):
print("\nB enter")
super(B, self).__init__(arg=arg, *content, **kwargs)
print("B leave\n")
print(arg, content, kwargs)
print(a.arg, a._dict['name'])
a = A('Ky-ky', name = 'Вася', hello = 'world')
b = B('Ok')
Update
class A:
def __init__(self, arg, **kwargs):
self.arg = arg
self._dict = kwargs
print("A enter --->", arg, kwargs)
print("A leave --->", self._dict)
class B(A, list):
def __init__(self, arg, *content, **kwargs):
print("\nB enter: ", arg, content, kwargs)
super(B, self).__init__(arg)
print("B leave\n")
print(arg, content, kwargs)
print(a.arg, a._dict['name'])
a = A('Ky-ky', name = 'Вася', hello = 'world')
b = B("arg", "content", nonpos1=0, nonpos2=1)
или так:
class A:
def __init__(self, arg, *content, **kwargs): # + *content
self.arg = arg
self._dict = kwargs
print("A enter --->", arg, kwargs)
print("A leave --->", self._dict)
class B(A, list):
def __init__(self, arg, *content, **kwargs):
print("\nB enter: ", arg, content, kwargs)
super(B, self).__init__(arg, *content, **kwargs)
print("B leave\n")
print(arg, content, kwargs)
print(a.arg, a._dict['name'])
a = A('Ky-ky', name = 'Вася', hello = 'world')
b = B("arg", "content", nonpos1=0, nonpos2=1)