Почему `object .__ init__` не принимает аргументов

Почему нетobject.__init__ принимать*args, **kwargs в качестве аргументов? Насколько я вижу, это ломает некоторый простой код очень раздражающим способом без каких-либо преимуществ:

Скажем, мы хотим убедиться, что все__init__называются все родительские классы. Пока каждый init следует простому соглашению вызоваsuper().__init__ это гарантирует, что вся иерархия будет пройдена и будет выполнена ровно один раз (также без необходимости указывать родителя). Проблема возникает, когда мы передаем аргументы:

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

Каковы причины этого и каков лучший обходной путь (! Он легко решаем в моем конкретном случае, но который зависит от дополнительных знаний об иерархии)? Лучшее, что я могу видеть, это проверить, является ли родитель объектом, и в этом случае не выдавать ему никаких аргументов ... ужасно ужасно.

Ответы на вопрос(2)

Ваш ответ на вопрос