¿Cómo anulo correctamente __setattr__ y __getattribute__ en clases de estilo nuevo en Python?

Quiero anular mi clase de Python__getattribute__ y__setattr__ métodos. Mi caso de uso es el habitual: tengo algunos nombres especiales que quiero manejar, y quiero el comportamiento predeterminado para cualquier otra cosa. Por__getattribute__, parece que puedo solicitar el comportamiento predeterminado simplemente elevandoAttributeError. Sin embargo, ¿cómo puedo lograr lo mismo en__setattr__? Aquí hay un ejemplo trivial, implementando una clase con campos inmutables "A", "B" y "C".

class ABCImmutable(SomeSuperclass):
    def __getattribute__(self, name):
        if name in ("A", "B", "C"):
            return "Immutable value of %s" % name
        else:
            # This should trigger the default behavior for any other
            # attribute name.
            raise AttributeError()

    def __setattr__(self, name, value):
        if name in ("A", "B", "C"):
            raise AttributeError("%s is an immutable attribute.")
        else:
            # How do I request the default behavior?
            ???

¿Qué pasa en lugar de los signos de interrogación? Con las clases de estilo antiguo, la respuesta fue aparentementeself.__dict__[name] = value, pero la documentación indica que esto es incorrecto para las clases de estilo nuevo.

Respuestas a la pregunta(2)

Su respuesta a la pregunta