클래스의 속성을 변경할 때 발생하는 이벤트를 감지하는 방법은 무엇인가요?

자바스크립트

자바스크립트에서는 Object.defineProperty() 메서드를 사용하여 속성 변경 이벤트를 감지할 수 있습니다. 이 메서드를 사용하면 속성 값을 변경할 때마다 getter와 setter 함수를 호출할 수 있습니다.

let obj = {};

Object.defineProperty(obj, 'name', {
  get: function() {
    return this._name;
  },
  set: function(value) {
    this._name = value;
    console.log('name 속성이 변경되었습니다.');
  }
});

obj.name = 'John'; // name 속성이 변경되었습니다.

파이썬

파이썬에서는 property 데코레이터를 사용하여 속성 변경 이벤트를 감지할 수 있습니다. 이를 통해 속성 변경 시 호출되는 getter와 setter 메서드를 정의할 수 있습니다.

class MyClass:
  def __init__(self):
    self._name = ''
    
  @property
  def name(self):
    return self._name
    
  @name.setter
  def name(self, value):
    self._name = value
    print('name 속성이 변경되었습니다.')

obj = MyClass()
obj.name = 'John' # name 속성이 변경되었습니다.

각 언어마다 속성 변경 이벤트를 감지하는 방식이 다를 수 있으니 해당 언어의 문서를 참고하시기 바랍니다.

참고 자료