English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Основной курс Python

Контроль потока в Python

Функции в Python

Типы данных в Python

Операции с файлами в Python

Объекты и классы в Python

Даты и время в Python

Продвинутые знания Python

Руководство по Python

Метод использования property() в Python и примеры

Внутренние функции Python

Конструктор property() возвращает атрибут property.

Синтаксис property():

property(fget=None, fset=None, fdel=None, doc=None)

Рекомендуется к прочтению: Python @property: как использовать и почему?

Параметры property()

property() принимает четыре параметра:

  • fget (опционально) - функция для получения значения атрибута. По умолчанию None.

  • fset (опционально) - функция для установки значения атрибута. По умолчанию None.

  • fdel (опционально) - функция для удаления значения атрибута. По умолчанию None.

  • doc (опционально) - строка, содержащая документацию атрибута (docstring). По умолчанию None.

Возвратное значение property()

property() возвращает атрибут атрибута из предоставленных getter, setter и deleter.

  • Если не указан параметр, property() возвращает базовый атрибут, который не содержит getter, setter или deleter.

  • Если не предоставленоdoc,property() использует docstring функции getter.

Пример 1: Создание свойства с помощью getter, setter и deleter

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

Пример 2: Использование декоратора @property

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, как показано в выводе метода, как показано в内部的 выводе.

Внутренние функции Python