Рубрики
Без рубрики

Python Property ()

Python Property, Python Property () Функция, декоратор недвижимости Python, Python Property Setter, Python Class Property, Python Property Getter Setter Delter

Автор оригинала: Pankaj Kumar.

Функция Python Property () Возвращает атрибут свойств. Он в основном используется для создания управляемого атрибута класса.

Python Property ()

Python Property () Функциональный синтаксис:

class property(fget=None, fset=None, fdel=None, doc=None)
  1. получить : Функция для получения значения атрибута
  2. fet : Функция, чтобы установить значение атрибута
  3. FDEL : Функция, чтобы удалить атрибут
  4. Док : Создает 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

Ссылка: Официальная документация