code: def setter(self, func):
          
          if not callable(func):
              raise TypeError('setter must be callable function')
          if hasattr(func, '__code__') and func.__code__.co_argcount != 2:
              raise TypeError('setter must be a function with two arguments')
          if func.__name__ != self.name:
              raise TypeError('setter function must have same name as getter')
          self._set_func = func
          return self
docs: Register a set function for the DynamicProperty
  
          This function must take two arguments, self and the new value.
          Input value to the function is validated with prop validation prior to
          execution.