Подробное объяснение
1️⃣ @dataclass создаёт __init__(self, tags=[]) — пустой список вычисляется один раз при определении класса.
2️⃣ u1 = User() и u2 = User() получают ссылку на один и тот же список.
3️⃣ u1.tags.append("admin") мутирует этот список.
4️⃣ u2.tags видит ту же мутацию — выводит ['admin'].
5️⃣ Правильно: tags: list = field(default_factory=list).
Почему это важно
Тот же баг, что и в обычной функции, но скрыт за декоратором. default_factory создаёт новый объект для каждого экземпляра.
Post #4743
701
- ✍ 3