Функция property() используется для определения свойств в классах.
Метод property() обеспечивает интерфейс для атрибутов экземпляра класса. Он инкапсулирует атрибуты экземпляров и предоставляет свойства, аналогично тому, как это работает в Java и C#.
Метод property() принимает на вход методы get, set и delete, и возвращает объекты класса property.
Вместо метода property() лучше использовать декоратор property (https://www.tutorialsteacher.com/python/property-decorator).
Параметры:
Возвращает атрибут свойства из заданных геттера, сеттера и функции удаления.
Следующий пример показывает, как создать свойство в Python с помощью функции property().
class person:
def __init__(self):
self.__name=''
def setname(self, name):
print('setname() called')
self.__name=name
def getname(self):
print('getname() called')
return self.__name
name=property(getname, setname)
В примере выше property(getname, setname) возвращает объект свойства и присваивает ему имя. Таким образом, свойство name скрывает приватный экземпляр __name. Доступ к свойству nameосуществляется напрямую, но внутри вызывается метод getname() или setname(), как показано ниже.
>>> from person import person
>>> p1=person()
>>> p1.name="Steve"
setname() called
>>> p1.name
getname() called
'Steve'
Как видно выше, метод getname() вызывается автоматически, когда мы обращаемся к свойству name. Аналогично метод setname вызывается, когда мы присваиваем значение свойству name. Он скрывает атрибут класса __name.
Аналогично можно написать метод удаления свойства, как в коде ниже.
class person:
def __init__(self, name):
self.__name=name
def setname(self, name):
print('setname() called')
self.__name=name
def getname(self):
print('getname() called')
return self.__name
def delname(self):
print('delname() called')
del self.__name
# Set property to use get_name, set_name
# and del_name methods
name=property(getname, setname, delname)
Функция delname() будет вызвана, когда вы удалите свойство name.
>>> from person import person
>>> p1=person()
>>> p1.name="Steve"
setname() called
>>> del p1.name
delname() called
Таким образом, мы можем определить свойство в классе с помощью функции property() в Python.
Декоратор @property упрощает объявление свойства и позволяет сделать это не вызывая функцию property().
Источник статьи: https://habr.com/ru/company/otus/blog/557804/
Метод property() обеспечивает интерфейс для атрибутов экземпляра класса. Он инкапсулирует атрибуты экземпляров и предоставляет свойства, аналогично тому, как это работает в Java и C#.
Метод property() принимает на вход методы get, set и delete, и возвращает объекты класса property.
Вместо метода property() лучше использовать декоратор property (https://www.tutorialsteacher.com/python/property-decorator).
Параметры:
- fget: (опционально) Функция для получения значения атрибута. Значение по умолчанию None.
- fset: (опционально) Функция для задания значения атрибута. Значение по умолчанию None.
- fdel: (опционально) Функция для удаления значения атрибута. Значение по умолчанию None.
- doc: (опционально) Строка, содержащая документацию. Значение по умолчанию None.
Возвращает атрибут свойства из заданных геттера, сеттера и функции удаления.
Следующий пример показывает, как создать свойство в Python с помощью функции property().
class person:
def __init__(self):
self.__name=''
def setname(self, name):
print('setname() called')
self.__name=name
def getname(self):
print('getname() called')
return self.__name
name=property(getname, setname)
В примере выше property(getname, setname) возвращает объект свойства и присваивает ему имя. Таким образом, свойство name скрывает приватный экземпляр __name. Доступ к свойству nameосуществляется напрямую, но внутри вызывается метод getname() или setname(), как показано ниже.
>>> from person import person
>>> p1=person()
>>> p1.name="Steve"
setname() called
>>> p1.name
getname() called
'Steve'
Как видно выше, метод getname() вызывается автоматически, когда мы обращаемся к свойству name. Аналогично метод setname вызывается, когда мы присваиваем значение свойству name. Он скрывает атрибут класса __name.
Аналогично можно написать метод удаления свойства, как в коде ниже.
class person:
def __init__(self, name):
self.__name=name
def setname(self, name):
print('setname() called')
self.__name=name
def getname(self):
print('getname() called')
return self.__name
def delname(self):
print('delname() called')
del self.__name
# Set property to use get_name, set_name
# and del_name methods
name=property(getname, setname, delname)
Функция delname() будет вызвана, когда вы удалите свойство name.
>>> from person import person
>>> p1=person()
>>> p1.name="Steve"
setname() called
>>> del p1.name
delname() called
Таким образом, мы можем определить свойство в классе с помощью функции property() в Python.
Декоратор @property упрощает объявление свойства и позволяет сделать это не вызывая функцию property().
Источник статьи: https://habr.com/ru/company/otus/blog/557804/