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 позволяет организовывать и настраивать поля объектов данных более гибким и выразительным способом, улучшая общую структуру и работоспособность объектов данных в приложениях.

На главную