Исходный код EJIO.utils.interface.tupleable
## /utils/interface/tupleable.py
from abc import abstractmethod
from typing import Protocol, Self
__all__ = [
'Tupleable',
]
[документация]
class Tupleable(Protocol):
"""
Интерфейс объектов, которые поддерживают преобразование в/из кортеж (tuple).
"""
__slots__ = ()
[документация]
@abstractmethod
def to_tuple[T](self) -> list[T]:
"""
Преобразовать объект в кортеж.
:return: Кортеж, отражающий состояние объекта.
:raises NotImplementedError: Должен быть реализован в подклассе.
"""
raise NotImplementedError
[документация]
@classmethod
@abstractmethod
def from_tuple[T](cls, data: list[T]) -> Self:
"""
Восстановить объект из кортежа.
:param data: Кортеж с данными.
:return: Новый объект, созданный из этого кортежа.
:raises NotImplementedError: Должен быть реализован в подклассе.
"""
raise NotImplementedError