Sobes.tech
Назад к вопросам
Junior — Middle
59

Какова роль свойства (property) в определении класса и его поведении?

Ответ от нейросети

sobes.tech AI

В Python свойство (property) — это способ управлять доступом к атрибутам класса через методы, но при этом использовать синтаксис обращения как к обычному атрибуту. Это позволяет инкапсулировать логику получения, установки и удаления значения, не меняя интерфейс класса.

С помощью свойства можно:

  • Добавить проверку или преобразование при присвоении значения.
  • Сделать атрибут доступным только для чтения.
  • Отложить вычисление значения до момента обращения.

Пример:

class Person:
    def __init__(self, name):
        self._name = name

    @property
    def name(self):
        return self._name

    @name.setter
    def name(self, value):
        if not value:
            raise ValueError("Имя не может быть пустым")
        self._name = value

p = Person("Иван")
print(p.name)  # Иван
p.name = "Пётр"  # сработает setter
# p.name = ""  # вызовет ошибку

Таким образом, свойства позволяют контролировать поведение атрибутов, сохраняя удобный и понятный интерфейс класса.