При инициализации нескольких родительских классов один из конструкторов не вызывается

Пытаюсь инициализировать родительские классы, но в конструктор класса 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)
→ Ссылка