«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Хитрость Python: использование классов данных с полем (default_factory=...)

Хитрость Python: использование классов данных с полем (default_factory=...)

Опубликовано 2 ноября 2024 г.
Просматривать:488

Python Trick: Using dataclasses with field(default_factory=...)

Модуль классов данных Python упрощает создание классов, используемых для хранения данных.

Хотя большинство людей знают о базовом использовании, существует менее известное поле функции (default_factory=...), которое может быть невероятно полезно для обработки значений по умолчанию в изменяемых типах.


Как это работает

При определении класса данных вы можете использовать изменяемое значение по умолчанию, например список или словарь.

Непосредственное использование изменяемого значения по умолчанию может привести к неожиданному поведению из-за того, что аргументы по умолчанию распределяются между экземплярами.

Функция default_factory обеспечивает простой способ обработки изменяемых значений по умолчанию.

Вот простой пример:

from dataclasses import dataclass, field
from typing import List


@dataclass
class Student:
    name: str
    grades: List[int] = field(default_factory=list)  # Use default_factory for mutable default


# Create new Student instances
student1 = Student(name="Alice")
student2 = Student(name="Bob", grades=[90, 85])

# Modify student1's grades
student1.grades.append(95)

print(student1)  # Output: Student(name='Alice', grades=[95])
print(student2)  # Output: Student(name='Bob', grades=[90, 85])


# Output:
# Student(name='Alice', grades=[95])
# Student(name='Bob', grades=[90, 85])

В этом примере оценки инициализируются пустым списком для каждого нового экземпляра Student.
Использование field(default_factory=list) гарантирует, что каждый экземпляр получит свой отдельный список, избегая ошибок общих изменяемых значений по умолчанию.


Почему это круто

Функция default_factory неоценима для предотвращения распространенных проблем с изменяемыми аргументами по умолчанию.

Это помогает гарантировать, что каждый экземпляр класса данных имеет собственное значение по умолчанию, что делает ваш код более предсказуемым и позволяет избежать тонких ошибок, связанных с общим состоянием.

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/devasservice/python-trick-using-dataclasses-with-fielddefaultfactory-4159?1. Если есть какие-либо нарушения, свяжитесь с [email protected], чтобы удалить их.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3