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