Фабрика значений по умолчанию в датаклассе в ООП в 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
и убедитесь, что списки навыков
у них разные.