Својство Питхон ()

Конструкција својства () враћа својство својства.

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

 својство (фгет = Ноне, фсет = Ноне, фдел = Ноне, доц = Ноне)

Препоручено читање: Питхон @проперти: Како га користити и зашто?

параметри својства ()

property()Потребно четири опционе параметре:

  • фгет (опционално) - функција за добијање вредности атрибута. Подразумевано None.
  • фсет (опционално) - функција за подешавање вредности атрибута. Подразумевано None.
  • фдел (опционално) - Функција за брисање вредности атрибута. Подразумевано None.
  • доц (опционално) - Низ који садржи документацију (доцстринг) за атрибут. Подразумевано None.

Повратна вредност из својства ()

property() враћа својство својства од датог гетера, постављача и брисача.

  • Ако се не дају аргументи, property()враћа основни атрибут својства који не садржи геттер, сеттер или делетер.
  • Ако документ није наведен, property()узима доцстринг функције гетера.

Пример 1: Креирајте атрибут помоћу гетера, постављача и брисача

 class Person: def __init__(self, name): self._name = name def get_name(self): print('Getting name') return self._name def set_name(self, value): print('Setting name to ' + value) self._name = value def del_name(self): print('Deleting name') del self._name # Set property to use get_name, set_name # and del_name methods name = property(get_name, set_name, del_name, 'Name property') p = Person('Adam') print(p.name) p.name = 'John' del p.name

Оутпут

 Добивање имена Име је: Адам Постављање имена на Јохн Брисање имена 

Овде се _наме користи као приватна променљива за чување имена особе.

Такође смо поставили:

  • геттер метода get_name()за добијање имена особе,
  • метода set_name()постављача за постављање имена особе,
  • методом del_name()брисања за брисање имена особе.

Сада постављамо ново име атрибута својства позивањем property()методе.

Као што је приказано у програму, позивање p.nameинтерних позива get_name()као гетера, set_name()постављача и del_name()брисача кроз исписани излаз присутан унутар метода.

Пример 2: Коришћење @проперти декоратера

Уместо да користите property(), помоћу декоратора Питхон @propertyможете доделити гетер, постављач и брисач.

 class Person: def __init__(self, name): self._name = name @property def name(self): print('Getting name') return self._name @name.setter def name(self, value): print('Setting name to ' + value) self._name = value @name.deleter def name(self): print('Deleting name') del self._name p = Person('Adam') print('The name is:', p.name) p.name = 'John' del p.name

Оутпут

 Добивање имена Име је: Адам Постављање имена на Јохн Брисање имена 

Овде смо, уместо да користимо property(), користили @propertyдекоратор.

Прво, прецизирамо да је name()метода такође особина особе. Ово се постиже коришћењем @propertyметоде пре гетера, као што је приказано у програму.

Даље користимо име атрибута да одредимо постављач и брисач.

То се постиже коришћењем @name.setterза методу постављања и @name.deleterза методу брисања.

Обавештење, користили смо исти метод name()са различитим дефиницијама за дефинисање гетера, постављача и брисача.

Сада, кад год користимо p.name, интерно позива одговарајући геттер, сеттер и делетер, као што приказује исписан излаз који се налази унутар методе.

Занимљиви Чланци...