Декодер свойств python

Возможный дубликат:
Пример реального мира о том, как использовать свойство свойства в python?

У меня вопрос о декораторе @property, который я видел в следующем коде. Может ли кто-нибудь быть достаточно любезен, чтобы полностью объяснить, почему кто-то будет использовать декоратор @property? Я знаю, что @property эквивалентен isActive = property(isActive), но что делает свойство метода действительно для него параметром? Если бы мне пришлось вызвать метод isActive из класса InputCell, что бы на самом деле произошло? Спасибо заранее.

class InputCell(object):
    def __init__(self, ix, iy, inputData):
        self.ix = ix
        self.iy = iy
        self.InputData = inputData

    @property
    def isActive(self):
        return self.InputData[self.ix][self.iy]

Ответы

Ответ 1

Это просто синтаксический сахар. Это позволяет вызову метода выглядеть как доступ к переменной или присваивание.

Один из способов может быть полезен, если вы хотите изменить то, что ранее было простой переменной, на то, что фактически вычислено или подтверждено другим кодом. Если вы сделаете это свойством, вы можете сделать это, не нарушая существующий код. Другой способ - кэширование, ленивая инициализация и т.д. Атрибутов объектов.