def forward_property(member):
 class Descriptor(object, ):
  def __init__(self, func_or_name):
   self._property_name = (func_or_name.__name__ if callable(func_or_name) else func_or_name)
  def __get__(self, obj, cls=None):
   return getattr(getattr(obj, member), self._property_name)
  def __set__(self, obj, value):
   return setattr(getattr(obj, member), self._property_name, value)
 return Descriptor

def forward_property ( member ) : class Descriptor ( object , ) : def __init__ ( self , func_or_name ) : self . _property_name = ( func_or_name . __name__ if callable ( func_or_name ) else func_or_name ) def __get__ ( self , obj , cls = None ) : return getattr ( getattr ( obj , member ) , self . _property_name ) def __set__ ( self , obj , value ) : return setattr ( getattr ( obj , member ) , self . _property_name , value ) return Descriptor
property that forwards access to a nested object .