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.

questionAnswers(2)

yourAnswerToTheQuestion