¿Cómo creo dinámicamente las propiedades en Python?

Supongamos que tengo una clase como esta:

class Alphabet(object):
     __init__(self):
         self.__dict = {'a': 1, 'b': 2, ... 'z': 26}

     @property
     def a(self):
         return self.__dict['a']

     @property
     def b(self):
         return self.__dict['b']

     ...

     @property
     def z(self)
         return self.__dict['z']

Sería una tarea larga y complicada de definir y parece muy redundante. ¿Hay una manera de crear dinámicamente estas propiedades? Sé que puede crear atributos dinámicamente con el setattr incorporado, pero quiero tener control sobre el acceso de lectura / escritura / eliminación (por esta razón quiero usar una propiedad). ¡Gracias!

Respuestas a la pregunta(2)

Su respuesta a la pregunta