<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def load(self, *args, **kwargs):
 """Load data using loadfunc. args, kwargs: forward to the loadfunc. args[0] must be the filename, so it means that loadfunc must take the filename as it's first argument. Set the filename attribute. .. note:: Updates the mask if not no_auto. ChannelPack is assuming a need for loading data from disc. If there is a desire to load some made-up data, a filename pointing to some actual file is nevertheless required. Here is a suggestion:: True {2: 'ch2', 5: 'ch5'} """

        D = self.loadfunc(*args, **kwargs)

        if self.chnames is not None:
            if set(D) - set(self.chnames):
                raise ValueError('New data set have different keys')

        self.D = D
        self.keys = sorted(self.D.keys())
        # If not all the same, there should have been an error already
        self.rec_cnt = len(self.D[self.keys[0]])

        fallnames = _fallback_names(self.keys)
        self.chnames_0 = dict(zip(self.keys, fallnames))
        self._set_filename(args[0])
        self.set_basefilemtime()

        self.args = args
        self.kwargs = kwargs

        if not self.no_auto:
            # Called here if a reload is done on the current instance I guess.
            self.make_mask()