Por que o `object .__ init__` não recebe argumentos?

Por que nãoobject.__init__ leva*args, **kwargs como argumentos? Isso quebra algum código simples de uma maneira altamente irritante, sem qualquer upside, tanto quanto eu posso ver:

Digamos que queremos ter certeza de que todos__init__de todas as classes pai são chamadas. Enquanto cada init segue a convenção simples de chamarsuper().__init__ isso garantirá que toda a hierarquia seja executada e que seja exatamente uma vez (também sem precisar especificar especificamente o pai). O problema aparece quando passamos argumentos:

class Foo:
    def __init__(self, *args, **kwargs):
        print("foo-init")
        super().__init__(*args, **kwargs) # error if there are arguments!

class Bar:
    def __init__(self, *args, **kwargs):
        print("bar-init")
        super().__init__(*args, **kwargs)

class Baz(Bar, Foo):
    def __init__(self, *args, **kwargs):
        print("baz-init")
        super().__init__(*args, **kwargs)

b1 = Baz() # works
b2 = Baz("error")

Qual é o raciocínio para isso e qual é o melhor geral (é facilmente solucionável no meu caso específico, mas que depende de conhecimento adicional da hierarquia) solução alternativa? O melhor que posso ver é verificar se o pai é objeto e, nesse caso, não dar nenhum argumento ... horrivelmente feio.

questionAnswers(2)

yourAnswerToTheQuestion