Establecer elementos de dictado de Python de forma recursiva, cuando se le da una clave compuesta 'foo.bar.baz'

Me gustaría lograr lo siguiente:

foodict['foo.bar.baz'] = 'foo'
{
   'foo': {
      'bar': {
            'baz': 'foo'
         }
       }
   }
}

... creando claves recursivamente.

Después de rascarme la cabeza por un tiempo, se me ocurrió esto:

class Config(dict):
    def __init__(self, *args, **kwargs):
        self.super = super(Config, self)
        self.update(*args, **kwargs)

    def __setitem__(self, keys, value):
        keys   = keys.split('.')
        keys.reverse()

        config = Config()

        for i, k in enumerate(keys):
            if i == 0:
                config  = Config(**{ k: value })
            else:
                config  = Config(**{ k: config })

        self.super.update(config)

Respuestas a la pregunta(1)

Su respuesta a la pregunta