def get_property(self):
        """Establishes the dynamic behavior of Property values"""
        scope = self

        def fget(self):
            """Call dynamic function then validate output"""
            value = scope.func(self)
            if value is None or value is undefined:
                return None
            return scope.validate(self, value)

        def fset(self, value):
            """Validate and call setter"""
            if scope.set_func is None:
                raise AttributeError('cannot set attribute')
            scope.set_func(self, scope.validate(self, value))

        def fdel(self):
            """call deleter"""
            if scope.del_func is None:
                raise AttributeError('cannot delete attribute')
            scope.del_func(self)

        return property(fget=fget, fset=fset, fdel=fdel, doc=scope.sphinx())
def get_property ( self ) : scope = self def fget ( self ) : value = scope . func ( self ) if value is None or value is undefined : return None return scope . validate ( self , value ) def fset ( self , value ) : if scope . set_func is None : raise AttributeError ( 'cannot set attribute' ) scope . set_func ( self , scope . validate ( self , value ) ) def fdel ( self ) : if scope . del_func is None : raise AttributeError ( 'cannot delete attribute' ) scope . del_func ( self ) return property ( fget = fget , fset = fset , fdel = fdel , doc = scope . sphinx ( ) )
Establishes the dynamic behavior of Property values