code: def get_property(self):
          
          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())
docs: Establishes the dynamic behavior of Property values