def __getitem__(self, x: Union[int, slice]) -> Union[T, 'List[T]']:  # type: ignore
        """doufo.List.__getitem__  
        Args:  
            `self`  
            `x` (`Union[int, slice]`): `int` or `slice`  
        Returns:   
            `selected item` ()  
        Raises: if wrong type variables inputted, raise `TyprError`   
        """
        if isinstance(x, int):
            return self.unbox()[x]
        if isinstance(x, slice):
            return type(self)(self.unbox()[x])
        raise TypeError(
            f"List indices must be integers or slices, not {type(x)}")
def __getitem__ ( self , x : Union [ int , slice ] ) -> Union [ T , 'List[T]' ] : if isinstance ( x , int ) : return self . unbox ( ) [ x ] if isinstance ( x , slice ) : return type ( self ) ( self . unbox ( ) [ x ] ) raise TypeError ( f"List indices must be integers or slices, not {type(x)}" )
doufo.List.__getitem__  
        Args:  
            `self`  
            `x` (`Union[int, slice]`): `int` or `slice`  
        Returns:   
            `selected item` ()  
        Raises: if wrong type variables inputted, raise `TyprError`