title: Method and property aliases with custom docstring in Python
body: <p>I have implemented the following decorators:</p>
  
  <pre><code>class alias(object):
  
      """
      A decorator for implementing method aliases.
      """
  
      def __init__(self, *aliases):
  
          self.aliases = set(aliases)
  
      def __call__(self, obj):
  
          if type(obj) == property:
              obj.fget._aliases = self.aliases
          else:
              obj._aliases = self.aliases
  
          return obj
  
  def aliased(aliased_class):
  
      """
      A decorator for enabling method aliases.
      """
  
      aliased_class_dict = aliased_class.__dict__.copy()
      aliased_class_set = set(aliased_class_dict)
  
      for name, method in aliased_class_dict.items():
  
          aliases = None
  
          if (type(method) == property) and hasattr(method.fget, '_aliases'):
              aliases = method.fget._aliases
          elif hasattr(method, '_aliases'):
              aliases = method._aliases
  
          if aliases:
  
              for a in aliases - aliased_class_set:
                  setattr(aliased_class, a, method)
  
      return aliased_class
  </code></pre>
  
  <p>Below, an example of how I'm using them in order to create callable aliases of properties and methods:</p>
  
  <pre><code>@aliased
  class MyClass(object):
  
      @alias('a')
      @property
      def alpha(self) -&gt; float:
  
          """
          Returns the value of alpha.
          """
  
          return 2.5
  
      @alias('agt')
      def alpha_greater_than(value) -&gt; bool:
  
          """
          Checks whether alpha is greater than the given value.
          """
  
          return self.alpha &gt; value
  
  mc = MyClass()
  result = mc.agt(3.0)
  # ...
  </code></pre>
  
  <p>Now I'm packaging out my project and building the documentation. At present, aliased methods and properties "inherit" the same docstring of the original entity. I would like to know if it's possible to manipulate the docstrings of aliased entities, at decorator level, so that they look like:</p>
  
  <blockquote>
    <p>This method/property is an alias of X.</p>
  </blockquote>