Автор оригинала: Pankaj Kumar.
Функция Python Property () Возвращает атрибут свойств. Он в основном используется для создания управляемого атрибута класса.
Python Property ()
Python Property () Функциональный синтаксис:
class property(fget=None, fset=None, fdel=None, doc=None)
- получить : Функция для получения значения атрибута
- fet : Функция, чтобы установить значение атрибута
- FDEL : Функция, чтобы удалить атрибут
- Док : Создает DOCSTRING для атрибута, который будет использоваться в Помощь () функция.
Давайте посмотрим на пример создания атрибута свойств в классе.
class Person: def __init__(self): self._name = None def get_name(self): print('get_name called') return self._name def set_name(self, i): print('set_name called') self._name = i def del_name(self): print('del_name called') del self._name name = property(get_name, set_name, del_name, "Person's Name Attribute") d = Person() d.name = 'Pankaj' print(d.name) del d.name
Выход:
set_name called get_name called Pankaj del_name called
Обратите внимание, что свойство имени человека управляется через указанные методы, и он использует _Name
Частная собственность человека.
Мы можем создать атрибут только для чтения или не удаленного атрибута с использованием функции свойства.
Если мы определим функцию свойств как:
name = property(get_name, set_name, None)
Тогда del d.name
бросит исключение как AttributeError: Не удается удалить атрибут
Отказ
Точно так же, если мы определим атрибут недвижимости как:
name = property(get_name, None, None)
Имя будет только для чтения. Если мы попытаемся установить его значение, используя D.name
тогда исключение будет брошено как AttributeError: не могу установить атрибут
Отказ
Декоратор недвижимости Python
Мы можем использовать @Property Decorator для достижения того же.
class Data: def __init__(self): self._id = None @property def id(self): print('id getter') return self._id @id.setter def id(self, i): print('id setter') self._id = i @id.deleter def id(self): print('id deleter') del self._id d = Data() d.id = 100 print(d.id) del d.id
Выход:
id setter id getter 100 id deleter
Ссылка: Официальная документация