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