Как работает @property.getter?

Декоратор @property.getter в языке Python позволяет создавать свойства (properties) для классов, которые могут быть доступны для чтения (getter) и записи (setter) в виде атрибутов класса, но при этом имеют особую логику, когда их значения запрашивают или изменяют.

@property.getter необходимо объявлять перед методом в классе с атрибутом, который вы хотите сделать доступным как свойство. Он работает как декоратор метода, который определяет геттер для данного атрибута.

Когда вы используете @property.getter, вы создаете метод, который будет вызываться, когда пользователь пытается получить значение данного свойства. Этот метод должен быть без аргументов и должен возвращать значение свойства.

Например, представим класс "Person":

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

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

    @property
    def age(self):
        return self._age

В этом примере мы использовали декоратор @property для установки методов name и age в качестве геттеров для атрибутов _name и _age соответственно.

Теперь, если мы создадим объект класса Person и попытаемся получить его атрибуты name и age как свойства, мы можем это сделать без явного вызова методов:

person = Person('John', 30)
print(person.name)  # Выведет 'John'
print(person.age)  # Выведет 30

Таким образом, декоратор @property.getter превращает методы класса в свойства, делая их доступными для чтения, и позволяет обращаться к ним как к атрибутам объекта класса без вызова методов. Это удобно и повышает читаемость кода.