title: How do I dynamically create properties in Python?
body: <p>Suppose I have a class like this:</p>
  
  <pre><code>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']
  </code></pre>
  
  <p>This would be a long and cumbersome task to define and it seems highly redundant. Is there a way to dynamically create these properties? I know you can dynamically create attributes with the built-in setattr, but I want to have control over read/write/delete access (for this reason I want to use a property). Thanks!</p>