Python — функция property()

Python 内置函数Встроенные функции Python


Описание

property()Функция используется для возврата значений атрибутов в классах нового стиля.

Синтаксис

Ниже приведён синтаксис метода property():

class property([fget[, fset[, fdel[, doc]]]])

Parameters

  • fget -- функция для получения значения атрибута
  • fset -- функция для установки значения атрибута
  • fdel -- функция для удаления значения атрибута
  • doc -- информация описания атрибута

Возвращаемое значение

Возвращает атрибуты класса нового стиля.

Примеры

Определяет управляемое значение атрибута x

class C(object): def __init__(self): self._x = None def getx(self): return self._x def setx(self, value): self._x = value def delx(self): del self._x x = property(getx, setx, delx, "Я — свойство 'x'.")

ЕслиcДаCЕсли c является экземпляром C, c.x вызовет геттер, c.x = value вызовет сеттер, а del c.x вызовет делитер.

Если параметр doc задан, он станет строкой документации этого значения атрибута; в противном случае функция property скопирует строку документации функции fget (если она есть).

Использование функции property в качестве декоратора позволяет удобно создавать свойства только для чтения:

class Parrot(object): def __init__(self): self._voltage = 100000 @property def voltage(self): """Получить текущее напряжение.""" return self._voltage

Приведённый выше код преобразует метод voltage() в метод-геттер для свойства только для чтения с тем же именем.

Методы getter, setter и deleter у property также можно использовать в качестве декораторов:

class C(object): def __init__(self): self._x = None @property def x(self): """Я — свойство 'x'.""" return self._x @x.setter def x(self, value): self._x = value @x.deleter def x(self): del self._x

Этот код точно такой же, как и первый пример, но обратите внимание, что имена этих дополнительных функций совпадают с именами под property, например x здесь.

Python 内置函数Встроенные функции Python

Другие расширения