문제
다음 Python 코드의 실행 결과를 쓰시오.
Pythonclass Prop: def __init__(self, value=0): self.value = value def __get__(self, obj, objtype=None): if obj is None: return self.value * 10 return getattr(obj, '_value', self.value) def __set__(self, obj, value): obj._value = value * 2 class Test: x = Prop(5) t1 = Test() t2 = Test() t1.x = 3 print(Test.x) print(t1.x) print(t2.x) t2.x = 7 print(t1.x) print(t2.x)
정답
50 6 5 6 14
5065614
해설
디스크립터 Prop의 동작: __get__에서 obj가 None(클래스 접근)이면 value*10을 반환하므로 Test.x는 50이다. 인스턴스 접근 시 _value 속성이 있으면 그 값을, 없으면 기본값을 반환한다. __set__은 설정값의 2배를 _value에 저장한다. t1.x=3 후 t1._value=6이므로 t1.x는 6, t2는 아직 _value가 없어 기본값 5를 반환. t2.x=7 후 t2._value=14가 되어 t2.x는 14, t1.x는 여전히 6이다.