class_docstr: :class:`UserDataLoader` will return a batch of data which only contains user-id when it is iterated.
  
  Args:
      config (Config): The config of dataloader.
      dataset (Dataset): The dataset of dataloader.
      sampler (Sampler): The sampler of dataloader.
      shuffle (bool, optional): Whether the dataloader will be shuffle after a round. Defaults to ``False``.
  
  Attributes:
      shuffle (bool): Whether the dataloader will be shuffle after a round.
          However, in :class:`UserDataLoader`, it's guaranteed to be ``True``.
code: def __init__(self, config, dataset, sampler, shuffle=False):
      self.logger = getLogger()
      if shuffle is False:
          shuffle = True
          self.logger.warning("UserDataLoader must shuffle the data.")
  
      self.uid_field = dataset.uid_field
      self.user_list = Interaction(
          {self.uid_field: torch.arange(dataset.user_num)}
      )
      self.sample_size = len(self.user_list)
      super().__init__(config, dataset, sampler, shuffle=shuffle)
  
file_path: RecBole/recbole/data/dataloader/user_dataloader.py
imports: import torch
  from logging import getLogger
  from recbole.data.dataloader.abstract_dataloader import AbstractDataLoader
  from recbole.data.interaction import Interaction
  import numpy
label_desc: Use image node_id 1 to create a new UserDataLoader object from inherited base classes: AbstractDataLoader with example: obj = UserDataLoader(config, dataset, sampler, shuffle)