Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗pyOpDcFf 121 of 174 menu
◀ ▶

Фабрика значений по умолчанию в датаклассе в ООП в Python

Если значением по умолчанию служит список или словарь, нельзя писать пустой список прямо в классе. Иначе все объекты разделят один и тот же список.

Для таких случаев используют функцию field с параметром default_factory. Фабрика вызывается отдельно для каждого нового объекта.

Давайте сделаем класс User со списком тегов:

from dataclasses import dataclass, field @dataclass class User: name: str tags: list = field(default_factory=list)

Создадим два объекта и добавим тег только первому:

user1 = User('john') user2 = User('eric') user1.tags.append('admin') print(user1.tags) # ['admin'] print(user2.tags) # []

Сделайте датакласс Employee с полем name и полем skills - списком строк. Список по умолчанию задайте через default_factory.

Создайте два объекта Employee и убедитесь, что списки навыков у них разные.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить