¿Por qué `object .__ init__` no toma argumentos

Porque noobject.__init__ tomar*args, **kwargs como argumentos? Esto rompe algunos códigos simples de una manera muy molesta, sin ninguna ventaja, por lo que puedo ver:

Digamos que queremos asegurarnos de que todos__init__De todas las clases parentales se llaman. Siempre y cuando cada inicio siga la simple convención de llamar.super().__init__ esto garantizará que se ejecute toda la jerarquía y que se realizará una sola vez (también sin tener que especificar específicamente el padre). El problema aparece cuando pasamos argumentos a lo largo:

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")

¿Cuál es el razonamiento para esto y cuál es la mejor solución general (! Es fácil de resolver en mi caso específico pero que se basa en un conocimiento adicional de la jerarquía) solución temporal? Lo mejor que puedo ver es comprobar si el padre es un objeto y, en ese caso, no darle ningún argumento ... horriblemente feo.

Respuestas a la pregunta(2)

Su respuesta a la pregunta