Исходный код EJIO.utils.interface.listable

## /utils/interface/listable.py

from abc import abstractmethod
from typing import Protocol, Self

__all__ = [
    'Listable',
]


[документация] class Listable(Protocol): """ Интерфейс объектов, которые поддерживают преобразование в/из списка (list). """ __slots__ = ()
[документация] @abstractmethod def to_list[T](self) -> list[T]: """ Преобразовать объект в список. :return: Список, отражающий состояние объекта. :raises NotImplementedError: Должен быть реализован в подклассе. """ raise NotImplementedError
[документация] @classmethod @abstractmethod def from_list[T](cls, data: list[T]) -> Self: """ Восстановить объект из списка. :param data: Список с данными. :return: Новый объект, созданный из этого списка. :raises NotImplementedError: Должен быть реализован в подклассе. """ raise NotImplementedError