code: def _create_setter(self, func, *targets):
          
          if not func:
              return None
  
          func = self._get_callable(func, *targets)
  
          if not self._function_has_n_args(func, 1):
              raise RuntimeError(
                  'The function \'{}\' does not look like a setter function. A valid setter '
                  'function has exactly one argument without a default. The self-argument of '
                  'methods does not count towards that number.'.format(func.__name__))
  
          def setter(obj, value):
              func(value)
  
          return setter
docs: Returns a function wrapping the supplied function. The returned wrapper can be used as the
          setter in a property definition. Raises a RuntimeError if the signature of the supplied
          function is not compatible with the setter-concept (exactly one argument except self).
  
          :param func: Callable or name of method on one object in targets.
          :param targets: List of targets with decreasing priority for finding func.
          :return: Setter function for constructing a wrapper-property or ``None``.