Get/set в классах
Есть класс Class
.
Для геттеров есть декоратор @property
, но для сеттеров - @prop_name.setter
.
Почему именно так?
Ответы (1 шт):
getter
: метод, который позволяет вам получить доступ к атрибуту
в данном классе.
setter
: метод, который позволяет вам устанавливать или изменять
значение атрибута в классе.
Вы определяете методы getter
и setter
для атрибутов.
Обычно метод getter
возвращают значение целевого атрибута,
а методы setter
принимают новое значение
и присваивают его базовому атрибуту.
class MyClass:
def __init__(self, text):
self._text = text
def get_text(self):
return self._text
def set_text(self, value):
self._text = value.upper()
print()
myClass = MyClass('Hello')
print(f'1 {myClass.get_text()}')
myClass.set_text('Hello u111')
print(f'2 {myClass.get_text()}')
print()
В Python, способ привязать поведение к атрибуту -
превратить сам атрибут в свойство.
Свойства объединяют методы для получения, установки
и документирования базовых данных.
Следовательно, свойства - это специальные атрибуты
с дополнительным поведением.
Вы можете использовать свойства так же, как и обычные атрибуты.
Когда вы получаете доступ к свойству, автоматически вызывается
прикрепленный к нему метод получения.
Аналогично, когда вы изменяете свойство, вызывается его метод установки.
Такое поведение предоставляет средства для придания функциональности
вашим атрибутам без внесения критических изменений в ваш код.
class MyClass:
def __init__(self, text):
self.text = text
@property
def text(self):
return self._text
@text.setter
def text(self, value):
self._text = value.upper()
myClass = MyClass('Hello')
print(f'3 {myClass.text}')
myClass.text = 'Hello u111'
print(f'4 {myClass.text}')