Get/set в классах

Есть класс Class.
Для геттеров есть декоратор @property, но для сеттеров - @prop_name.setter.

Почему именно так?


Ответы (1 шт):

Автор решения: S. Nick

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}') 

введите сюда описание изображения

→ Ссылка