English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Конструктор property() возвращает атрибут property.
Синтаксис property():
property(fget=None, fset=None, fdel=None, doc=None)
Рекомендуется к прочтению: Python @property: как использовать и почему?
property() принимает четыре параметра:
fget (опционально) - функция для получения значения атрибута. По умолчанию None.
fset (опционально) - функция для установки значения атрибута. По умолчанию None.
fdel (опционально) - функция для удаления значения атрибута. По умолчанию None.
doc (опционально) - строка, содержащая документацию атрибута (docstring). По умолчанию None.
property() возвращает атрибут атрибута из предоставленных getter, setter и deleter.
Если не указан параметр, property() возвращает базовый атрибут, который не содержит getter, setter или deleter.
Если не предоставленоdoc,property() использует docstring функции getter.
class Person: def __init__(self, name): self._name = name def get_name(self): print('Получить имя:') return self._name def set_name(self, value): print('Имя устанавливается: ' + value) self._name = value def del_name(self): print('Удалить имя') del self._name # для установки свойства используется get_name, set_name # и метод del_name name = property(get_name, set_name, del_name, 'Name property') p = Person('Чжан Сань') print(p.name) p.name = 'Ли Сих' del p.name
Результат вывода
Получить имя: Чжан Сань Имя устанавливается: Ли Сих Удалить имя
Здесь_nameИспользуется для храненияPersonПриватная переменная имени
Мы также устанавливаем:
get_name() - это метод получения имени
Метод setter set_name() используется для установки имени человека
Метод del_name() используется для удаления имени человека
Теперь мы устанавливаем новый имя свойства, вызывая метод property()
Как показано в программе, через вывод на печать внутри метода, внутренняя ссылка p.name вызывает get name() в качестве getter, set name() в качестве setter, del name() в качестве deleter
property() может быть использованДекораторы Python @property для назначения getter, setter и Deleter, а не для использования.
class Person: def __init__(self, name): self._name = name @property def name(self): print('Получить имя:') return self._name @name.setter def name(self, value): print('Установить имя: ' + value) self._name = value @name.deleter def name(self): print('Удалить имя') del self._name p = Person('Ван Мази') print('Имя:', p.name) p.name = 'Ли Эр' del p.name
Результат вывода
Получить имя: Имя: Ван Мази Установить имя: Ли Эр Удалить имя
Здесь мы не используем property(), а используем декоратор @property.
Сначала мы определяем метод name() какPersonсвойства. Это можно сделать с помощью getter-метода, показанного в @property программы.
Далее, мы используем имя свойства для указания setter и deleter.
Это достигается с помощью использования методов @name.settersetter и @name.deleterDeleter.
Обратите внимание, что мы использовали один и тот же метод name() с различным определением для getter, setter и deleter.
Теперь, в любое время использования p.name, он внутренне вызовет соответствующий getter, setter и Deleter, как показано в выводе метода, как показано в内部的 выводе.