class_desc/extensions/dataclass_extension.md
Класс DataClassExtension
Класс DataClassExtension предназначен для расширения функциональности стандартных полей (dataclasses.fields) и предоставляет удобные методы для создания и настройки полей в объектах данных (dataclass). Он помогает улучшать организацию полей, включая задание значений по умолчанию и метаданных, что облегчает работу с объектами данных в Python.
Основная информация
- Имя файла: anb_python_components\extensions\dataclass_extension.py
- Автор: Александр Бабаев
- Версия: 1.0.0
- Дата начала поддержки: с версии 1.4.0
Атрибуты и методы класса
Статический метод define
Создает поле с заданными значениями по умолчанию и метаданными.
Параметры:
default: значение по умолчанию (опционально).metadata: метаданные для поля (опционально).
Возвращает:
- Объект поля (
Field).
Пример использования:
from dataclasses import dataclass
from anb_python_components import DataClassExtension
class Fields:
@staticmethod
def primary_key (default = None):
return DataClassExtension.define(default, metadata = {'db_primary_key': True})
@staticmethod
def unique (default = None):
return DataClassExtension.define(default, metadata = {'db_unique': True})
@staticmethod
def indexed (default = None):
return DataClassExtension.define(default, metadata = {'db_indexed': True})
@dataclass
class A:
a: int = Fields.primary_key(0)
b: str = Fields.unique("")
Статический метод defines
Расширяет поле дополнительными метаданными из существующих полей.
Параметры:
default: значение по умолчанию.fields: существующие поля, чьи метаданные будут использованы.
Возвращает:
- Объект поля (
Field).
Пример использования:
from dataclasses import dataclass
from anb_python_components import DataClassExtension
class Fields:
@staticmethod
def primary_key (default = None):
return DataClassExtension.define(default, metadata = {'db_primary_key': True})
@staticmethod
def unique (default = None):
return DataClassExtension.define(default, metadata = {'db_unique': True})
@staticmethod
def indexed (default = None):
return DataClassExtension.define(default, metadata = {'db_indexed': True})
@staticmethod
def compose (default, *fields):
return DataClassExtension.defines(default, *fields)
@dataclass
class A:
a: int = Fields.primary_key(0)
b: str = Fields.compose("", Fields.unique(), Fields.indexed())
Заключение
Класс DataClassExtension позволяет организовывать и настраивать поля объектов данных более гибким и выразительным способом, улучшая общую структуру и работоспособность объектов данных в приложениях.