code: def call_method(self, method_name):
          
          params = []
          method = getattr(self, method_name)
  
          method_params, varargs, varkw, defaults = inspect.getargspec(method)
          if method_params and len(method_params) > 1:
              method_params.pop(0)  # pop the self off
              data = self._merge_defaults(self.data, method_params, defaults)
              for param in method_params:
                  value = data.get(param)
                  self.validate_param(method, param, value)
                  value = self.convert_param(method, param, value)
                  params.append(value)
  
          return method(*params)
docs: Call an instance method filling in all the method parameters based
          on their names. The parameters are filled in from the following
          locations (in that order of precedence):
  
              1. Path parameters from routing
              2. GET parameters
              3. POST parameters
  
          All values are validated using the method :func:`validate_param`. The
          return value of the method is returned unaltered.
  
          :param method_name: Name of the method on the current instance to
                              call.
          :type method_name: str