code: def _assign_method(self, resource_class, method_type):
          
          method_name = resource_class.get_method_name(
              resource_class, method_type)
          valid_status_codes = getattr(
              resource_class.Meta,
              'valid_status_codes',
              DEFAULT_VALID_STATUS_CODES
          )
  
          # uid is now the first argument (after self)
          @self._cache
          def get(self, uid=None, method_type=method_type,
                  method_name=method_name,
                  valid_status_codes=valid_status_codes,
                  resource=resource_class, data=None, **kwargs):
              uid = uid.lower() if isinstance(uid, str) else uid
              return self.call_api(
                  method_type, method_name,
                  valid_status_codes, resource,
                  data, uid=uid, **kwargs)
  
          # only GET method is used
          setattr(
              self, method_name,
              types.MethodType(get, self)
          )
  
          # for easier listing of get methods
          self._all_get_methods_names.append(method_name)
docs: Exactly the same code as the original except:
          - uid is now first parameter (after self). Therefore, no need to explicitly call 'uid='
          - Ignored the other http methods besides GET (as they are not needed for the pokeapi.co API)
          - Added cache wrapping function
          - Added a way to list all get methods