def __init__(self, data: IDataset[T_co], name: str, use_in_getitem: bool = False):
        """Data Attribute.

        :param data: a sequence of values, one for each sample.
        :param name: a name that uniquely identifies the attribute.
            It is used by `AvalancheDataset` to dynamically add it to its
            attributes.
        :param use_in_getitem: If True, `AvalancheDataset` will add
            the value at the end of each sample.
        """
        assert name is not None
        assert data is not None

        self.name: str = name
        self.use_in_getitem: bool = use_in_getitem

        self._data: FlatData[T_co] = self._normalize_sequence(data)

        self._uniques: Optional[Set[T_co]] = None  # set()
        self._val_to_idx: Optional[Dict[T_co, Sequence[int]]] = None  # dict()
        self._count: Optional[Dict[T_co, int]] = None  # dict()
Data Attribute.

        :param data: a sequence of values, one for each sample.
        :param name: a name that uniquely identifies the attribute.
            It is used by `AvalancheDataset` to dynamically add it to its
            attributes.
        :param use_in_getitem: If True, `AvalancheDataset` will add
            the value at the end of each sample.
        
avalanche/benchmarks/utils/data_attribute.py