<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def data_dtype(self):
 """Data type of the data block as determined from `header`. If no header is available (i.e., before it has been initialized), or the header entry ``'mode'`` is missing, the data type gained from the ``dtype`` argument in the initializer is returned. Otherwise, it is determined from ``mode``. """

        if not self.header:
            return self._init_data_dtype
        try:
            mode = int(self.header['mode']['value'])
        except KeyError:
            return self._init_data_dtype
        else:
            try:
                return MRC_MODE_TO_NPY_DTYPE[mode]
            except KeyError:
                raise ValueError('data mode {} not supported'.format(mode))