클래스의 속성을 변경할 때 발생하는 이벤트를 감지하는 방법은 무엇인가요?
자바스크립트
자바스크립트에서는 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 속성이 변경되었습니다.
각 언어마다 속성 변경 이벤트를 감지하는 방식이 다를 수 있으니 해당 언어의 문서를 참고하시기 바랍니다.