Исходный код 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