■ 클래스에서 __getattribute__ 메소드를 사용하는 방법을 보여준다.
※ 객체의 속성에 접근할 때마다 호출되며, 심지어 해당 속성이 속성 딕셔너리에 있을 때도 호출됩니다. 이런 동작 덕분에 속성에 접근할 때마다 전역 트랜잭션 상태를 확인하는 작업 등에 쓸 수 있다.
▶ 예제 코드 (PY)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
class TestClass: def __init__(self): self.value1 = 10 def __getattribute__(self, propertyName): print("__getattribute__ 메소드 호출 : %s" % propertyName) try: return super().__getattribute__(propertyName) except AttributeError: value = None setattr(self, memberName, value) return value testClass = TestClass() print("value1 : ", testClass.value1) print("value2 : ", testClass.value2) print("value2 : ", testClass.value2) """ __getattribute__ 메소드 호출 : value1 value1 : 10 __getattribute__ 메소드 호출 : value2 value2 : None __getattribute__ 메소드 호출 : value2 value2 : None """ |