Метод как свойство объекта в Python
Всё-таки Python красивый язык. Свойство объекта может быть определено как специальный метод экземпляра объекта. Практически это позволяет обращаться к свойству как по имени, так и с помощью метода (getter или setter, или и то и другое в зависимости от операции). Кроме того, такие обращения к методу позволяют при получении и установке свойств выполнять дополнительные операции, например изменять счётчик обращений к свойству объекта.
class MyClass(object): def get_a(self): return self._a + 1 def set_a(self, value): self._a = value - 1 a = property(get_a, set_a, doc="Off by one a")
Начиная с Python 2.6 можно использовать декораторы @property и @setter, и сделать код ещё красивее:
# Python 2.6 style class MyClass(object): @property def a(self): return self._a + 1 @a.setter #makes the property writeable def a(self, value): self._a = value - 1