Функція property() в Python

 1613

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

Результат:

Getting value
Acode
Setting value to Acd
Deleting value

Синтаксис функції property()

Параметри функції property()

Функція property() приймає 4 необов’язкові параметри:

   fget (не обов’язково) — функція для отримання значення атрибута. За замовчуванням використовується None;

   fset (не обов’язково) — функція для встановлення значення атрибута. За замовчуванням використовується None;

   fdel (не обов’язково) — функція для видалення значення атрибута. За замовчуванням використовується None;

   doc (не обов’язково) — рядок, який містить документацію (рядок документації) для атрибута. За замовчуванням використовується None.

Значення, яке повертає функція property()

Функція property() повертає атрибут властивості із заданого геттера, сеттера та делітера.

   Якщо аргументи не вказані, функція property() повертає базовий атрибут властивості, яка не містить жодного геттера, сеттера чи делітера.

   Якщо аргумент doc не вказано, функція property() приймає рядок документації функції геттера.

Приклад №1: Створення атрибута з функціями геттера, сеттера та делітера

Результат:

Getting name
The name is: Adam
Setting name to John
Deleting name

Тут _name використовується як закрита (private) змінна для зберігання імені Person.

Також ми встановлюємо:

   геттер get_name() для отримання імені людини;

   сеттер set_name() для встановлення імені людини;

   делітер del_name() для видалення імені людини.

І новий атрибут властивості name, викликаючи функцію property().

Як показано в програмі, посилання на p.name внутрішньо викликає метод get_name() як гетер, set_name() як сетер і del_name() як делітер через вивід, який представлений всередині методів.

Приклад №2: Використання декоратора @property

Замість використання функції property() ми можемо використати декоратор @property для присвоювання геттера, сеттера та делітера:

Результат:

Getting name
The name is: Adam
Setting name to John
Deleting name

Тут замість використання функції property() ми використали декоратор @property.

По-перше, ми вказуємо, що метод name() є атрибутом класу Person. Це робиться за допомогою @property перед геттером, як показано у програмі. Далі ми використовуємо атрибут name для вказівки сеттера та делітера. Це робиться за допомогою @name.setter для методу сеттера та @name.deleter для методу делітера. Зверніть увагу на те, що ми використали той же метод name() з різними визначеннями для визначення геттера, сеттера та делітера.

Тепер, коли ми використовуємо p.name, він внутрішньо (під капотом) викликає відповідний геттер, сеттер і делітер.

Оцінити статтю:

1 Зірка2 Зірки3 Зірки4 Зірки5 Зірок (1 оцінок, середня: 5,00 з 5)
Завантаження...

Залишити відповідь

Ваш E-mail не буде опублікований. Обов'язкові поля відмічені *