Python Property: Understanding and Implementing Property in Python
Python property - это способ добавления геттеров и сеттеров для атрибута класса без необходимости изменения интерфейса класса. Это позволяет управлять доступом к данным и добавлять дополнительную логику при чтении или изменении значения атрибута.
Пример:
class Person:
def __init__(self, name):
self._name = name
@property
def name(self):
return self._name
@name.setter
def name(self, value):
if not isinstance(value, str):
raise TypeError('Name must be a string')
self._name = value
p1 = Person('John')
print(p1.name) # John
p1.name = 'Mike'
print(p1.name) # Mike
p1.name = 1 # TypeError: Name must be a string
В примере выше, мы объявляем класс Person с атрибутом _name. Затем мы добавляем свойство name с помощью декоратора @property. Это позволяет нам получить доступ к атрибуту name, используя синтаксис p1.name вместо p1._name.
Мы также определяем сеттер с помощью декоратора @name.setter, который проверяет тип переданного значения. Если значение не является строкой, мы вызываем исключение TypeError.
Это позволяет нам добавлять дополнительную логику при изменении значения атрибута, например, проверка на корректность введенных данных.
В итоге, Python property - это мощный инструмент для управления доступом к данным в классах, который позволяет добавлять дополнительную логику при чтении и изменении значений атрибутов.