¿Por qué no pueden pasar * args y ** kwargs en __init__ de una clase secundaria

Para entender * args y ** kwargs hice algunas búsquedas sobre, cuando caí en esta pregunta* args y ** kwargs?

La respuesta debajo de la respuesta elegida me llamó la atención, que es esta:

class Foo(object):
    def __init__(self, value1, value2):
    # do something with the values
        print value1, value2

class MyFoo(Foo):
    def __init__(self, *args, **kwargs):
    # do something else, don't care about the args
        print 'myfoo'
        super(MyFoo, self).__init__(*args, **kwargs)

Intenté algunas cosas en este ejemplo y ejecuté el código de esta manera:

class Foo(object):
    def __init__(self, value1, value2):
    # do something with the values
        print 'I think something is being called here'
        print value1, value2


class MyFoo(Foo):
    def __init__(self, *args, **kwargs):
    # do something else, don't care about the args
        print args, kwargs
        super(MyFoo, self).__init__(*args, **kwargs)


foo = MyFoo('Python', 2.7, stack='overflow')

Tengo esto:

[...]
    super(MyFoo, self).__init__(*args, **kwargs)
TypeError: __init__() got an unexpected keyword argument 'stack'

Cambiando para ser comosuper(MyFoo, self).__init__(args, kwargs)

los resultados son:

('Python', 2.7) {'stack': 'overflow'}
I think something is being called here
('Python', 2.7) {'stack': 'overflow'}

Por algunas razones sorprendentes, estoy cuestionando esto: ¿qué podría estar bien o mal en el ejemplo anterior? ¿Qué se permitiría hacer y qué no en la producción de la vida real?

Respuestas a la pregunta(4)

Su respuesta a la pregunta