Как отследить изменение атрибута класса python?

Каким образом можно отследить изменение атрибута класса и при нужном значении запускать функцию?

Пример кода

сlass Vehicle(object):
 
    def __init__(self, color, doors):
        self.color = color
        self.doors = doors

    def print():
        if color == 'green':
              print('color green')

пример поведения

car = Vehicle("blue", 5)
#ничего не печатается

car.color = 'green'
#выводиться color green

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

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

Попробуйте так:

class Vehicle(object):
    def __init__(self, color, doors):
        self._color = color
        self.doors = doors

    def _print(self):
        if self._color == 'green':
            print('color green')
        elif self._color == 'red':
            print('color red')
              
    @property
    def color(self):
        return self._color

    @color.setter    
    def color(self, value):
        self._color = value
        self._print()
  
              
car = Vehicle("blue", 5)
car.color = 'green'
car.color = 'red'
→ Ссылка