code: def autoargs(include=None,  # type: Union[str, Tuple[str]]
               exclude=None,  # type: Union[str, Tuple[str]]
               f=DECORATED
               ):
      
      return autoargs_decorate(f, include=include, exclude=exclude)
docs: Defines a decorator with parameters, to automatically assign the inputs of a function to self PRIOR to executing 
      the function. In other words:
      
      ```
      @autoargs
      def myfunc(a):
          print('hello')
      ```
      
      will create the equivalent of
      
      ```
      def myfunc(a):
          self.a = a
          print('hello')
      ```
      
      Initial code from http://stackoverflow.com/questions/3652851/what-is-the-best-way-to-do-automatic-attribute-assignment-in-python-and-is-it-a#answer-3653049
  
      :param include: a tuple of attribute names to include in the auto-assignment. If None, all arguments will be
          included by default
      :param exclude: a tuple of attribute names to exclude from the auto-assignment. In such case, include should be None
      :return: