Sobes.tech
Junior — Middle
98

Могу ли у Python-у креирати објекат који се не може изменити након његове иницијализације?

Одговор од АИ

sobes.tech АИ

В Python можно создать неизменяемый (immutable) объект несколькими способами. Самый простой — использовать встроенные неизменяемые типы, например, кортежи или строки. Для своих классов можно использовать:

  • namedtuple из модуля collections, который создаёт неизменяемые объекты с именованными полями.
  • @dataclass(frozen=True) из модуля dataclasses (Python 3.7+), который делает экземпляры класса неизменяемыми.
  • Переопределить методы класса так, чтобы запрещать изменение атрибутов после инициализации.

Пример с dataclass:

from dataclasses import dataclass

@dataclass(frozen=True)
class Point:
    x: int
    y: int

p = Point(1, 2)
# p.x = 3  # вызовет ошибку: cannot assign to field 'x'

Таким образом, после создания объекта его поля нельзя изменить.