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

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

문제

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

Python
class Meta(type): def __new__(cls, name, bases, attrs): if bases: attrs['level'] = len([b for b in bases if hasattr(b, 'level')]) return super().__new__(cls, name, bases, attrs) class A(metaclass=Meta): pass class B(A): pass class C(B): pass class D(A, B): pass print(hasattr(A, 'level')) print(B.level) print(C.level) print(D.level)

정답

False 0 1 1

False 0 1 1False 0 1 1

해설

메타클래스 Meta의 new 메서드는 클래스 생성 시 bases 튜플에서 'level' 속성을 가진 부모 클래스의 개수를 세어 level 속성으로 설정한다.

  1. A: bases가 비어있으므로 level 속성이 생성되지 않는다 → hasattr(A, 'level') = False
  2. B: A를 상속하지만 A에는 level 속성이 없으므로 level = 0
  3. C: B를 상속하고 B에는 level 속성이 있으므로 level = 1
  4. D: A와 B를 다중 상속하는데, B만 level 속성을 가지므로 level = 1

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

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