property (свойство)
«Вычисляемое» свойство.
property([fget[, fset[, fdel[, doc]]]])
-> property
fget -- Функция, реализующая возврат значения свойства.
fset -- Функция, реализующая установку значения свойства.
fdel -- Функция, реализующая удаление значения свойства.
doc -- Строка документации для создаваемого свойства. +py2.5 Если не задано , будет использовано описание от 'fget' (если оно существует).
fset -- Функция, реализующая установку значения свойства.
fdel -- Функция, реализующая удаление значения свойства.
doc -- Строка документации для создаваемого свойства. +py2.5 Если не задано , будет использовано описание от 'fget' (если оно существует).
Позволяет использовать методы в качестве свойств объектов — порождает дескриптор, позволяющий создавать «вычисляемые» свойства (тип
Пример использования в классическом виде:
Используя функцию в качестве декоратора можно легко создавать вычисляемые свойства только для чтения:
+py2.6 Объект свойства также предоставляет методы
+py3.5 Добавлена возможность установки строки документации для объекта-свойства.
property
).Пример использования в классическом виде:
class Mine(object):
def __init__(self):
self._x = None
def get_x(self):
return self._x
def set_x(self, value):
self._x = value
def del_x(self):
self._x = 'No more'
x = property(get_x, set_x, del_x, 'Это свойство x.')
type(Mine.x) # property
mine = Mine()
mine.x # None
mine.x = 3
mine.x # 3
del mine.x
mine.x # No more
Используя функцию в качестве декоратора можно легко создавать вычисляемые свойства только для чтения:
class Mine(object):
def __init__(self):
self._x = 'some value'
@property
def prop(self):
return self._x
mine = Mine()
mine.prop # some value
mine.prop = 'other value' # AttributeError
del mine.prop # AttributeError
+py2.6 Объект свойства также предоставляет методы
getter
, setter
, deleter
, которые можно использовать в качестве декораторов для указания функций реализующих получение, установку и удаление свойства соответственно. Следующий код эквивалентен коду из первого примера: class Mine(object):
def __init__(self):
self._x = None
x = property()
@x.getter
def x(self):
"""Это свойство x."""
return self._x
@x.setter
def x(self, value):
self._x = value
@x.deleter
def x(self):
self._x = 'No more'
Внимание
Как видно из приведённого выше примера, функции-вычислители свойства должны иметь то же имя, что и само свойство.
+py3.5 Добавлена возможность установки строки документации для объекта-свойства.
Синонимы поиска: property (свойство), свойства, свойство, @property, properties
В разделе «object (объект)»:
file (файл)
object.__add__
object.__bool__
object.__call__
object.__ceil__
object.__class__
object.__cmp__
object.__contains__
object.__copy__
object.__deepcopy__
object.__del__
object.__delattr__
object.__delete__
object.__delitem__
object.__delslice__
object.__dir__
object.__enter__
object.__eq__
object.__exit__
object.__floor__
object.__format__
object.__ge__
object.__get__
object.__getattr__
object.__getattribute__
object.__getitem__
object.__getslice__
object.__getstate__
object.__gt__
object.__hash__
object.__init__
object.__init_subclass__
object.__iter__
object.__le__
object.__len__
object.__lt__
object.__missing__
object.__ne__
object.__new__
object.__next__
object.next
object.__nonzero__
object.__qualname__
object.__rcmp__
object.__repr__
object.__reversed__
object.__set__
object.__setattr__
object.__setitem__
object.__set_name__
object.__setslice__
object.__setstate__
object.__slots__
object.__str__
object.__sub__
object.__subclasses__
object.__unicode__
Protocols (протоколы)
slice (срез)
Встроенные исключения
На заметку
Читайте нас в Twitter. Ссылка в самом низу страницы.