def property(func):
    """Wrap a function as a property.

    This differs from attribute by identifying properties explicitly listed
    in the class definition rather than named attributes defined on instances
    of a class at init time.
    """
    attr = abc.abstractmethod(func)
    attr.__iproperty__ = True
    attr = Property(attr)
    return attr
Wrap a function as a property.

    This differs from attribute by identifying properties explicitly listed
    in the class definition rather than named attributes defined on instances
    of a class at init time.