정보처리기사 실기PythonPython - 클래스와 매직 메서드난이도 5SHORT_ANSWER

정보처리기사 실기 Python - 클래스와 매직 메서드 기출문제 #292

문제

다음 Python 코드의 실행 결과를 쓰시오.

Python
class Descriptor: def __init__(self, name): self.name = name def __get__(self, obj, owner): if obj is None: return self return getattr(obj, f'_{self.name}') def __set__(self, obj, value): setattr(obj, f'_{self.name}', value * 2) class MyClass: x = Descriptor('x') def __init__(self, value): self.x = value a = MyClass(5) print(a.x) print(a._x) b = MyClass(3) print(isinstance(MyClass.x, Descriptor)) print(type(MyClass.x).__name__)

정답

10 10 True Descriptor

10 10 True Descriptor10 10 True Descriptor

해설

  1. MyClass(5) 생성 시 self.x = 5가 실행되어 Descriptor의 set 메서드가 호출된다. value * 2 = 5 * 2 = 10이 _x 속성에 저장된다.
  2. a.x 접근 시 Descriptor의 get 메서드가 호출되어 a._x 값인 10을 반환한다.
  3. a._x 직접 접근 시 저장된 값 10을 반환한다.
  4. MyClass(3) 생성 시 마찬가지로 3 * 2 = 6이 _x에 저장되지만 출력하지 않는다.
  5. isinstance(MyClass.x, Descriptor) 검사는 MyClass.x가 Descriptor 인스턴스이므로 True를 반환한다.
  6. type(MyClass.x).__name__은 Descriptor 클래스의 이름인 'Descriptor'를 반환한다.

이런 문제 20~50개를 한 번에 풀어보세요

매번 새로 추가되는 모의고사 + 오답 자동 복습 + 회차별 실력 추적. 회원가입 후 무료 이용.