Загружаем изображение…
Почему нельзя использовать изменяемые значения по умолчанию в конструкторах?
Если задать список или словарь как значение по умолчанию, объект создаётся один раз и затем переиспользуется всеми экземплярами.
class User:
def __init__(self, tags=[]):
self.tags = tagsЭто приводит к тому, что изменение в одном экземпляре влияет на остальные:
u1 = User(); u2 = User()
u1.tags.append("x"); print(u2.tags)default_factory создаёт новый объект при каждом вызове конструктора, устраняя совместное состояние:field(default_factory=list)Таким образом каждый экземпляр получает независимую структуру данных:
User().tags is User().tagsИспользование
default_factory является важной практикой при работе с изменяемыми типами и предотвращает труднообнаруживаемые ошибки состояния.Python Ready | #совет