Dlaczego `obiekt .__ init__` nie przyjmuje argumentów

Dlaczego nieobject.__init__ brać*args, **kwargs jako argumenty? Łamie to jakiś prosty kod w bardzo irytujący sposób, bez żadnych poprawek, o ile widzę:

Powiedzmy, że chcemy się upewnić, że wszystko__init__wywoływane są wszystkie klasy nadrzędne. Tak długo, jak każdy init postępuje zgodnie z prostą konwencją wywoływaniasuper().__init__ zagwarantuje to, że cała hierarchia zostanie uruchomiona i to dokładnie raz (również bez konieczności podawania konkretnie rodzica). Problem pojawia się, gdy przekazujemy argumenty:

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

Jakie jest tego uzasadnienie i jaki jest najlepszy ogólny (! Łatwo go rozwiązać w moim konkretnym przypadku, ale opiera się na dodatkowej znajomości hierarchii) obejście? Najlepsze, co mogę zobaczyć, to sprawdzenie, czy rodzic jest obiektem iw takim przypadku nie podawaj mu żadnych argumentów.