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

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

문제

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

Python
class Meta(type): def __new__(cls, name, bases, attrs): attrs['class_id'] = len(bases) + 1 return super().__new__(cls, name, bases, attrs) class A(metaclass=Meta): pass class B(A): pass class C(A, B): pass print(A.class_id) print(B.class_id) print(C.class_id)

정답

1 2 3

123

해설

메타클래스의 new 메서드에서 attrs['class_id'] = len(bases) + 1로 설정한다. 클래스 A는 bases가 빈 튜플 ()이므로 len(bases) = 0, class_id = 1이다. 클래스 B는 bases가 (A,)이므로 len(bases) = 1, class_id = 2이다. 클래스 C는 bases가 (A, B)이므로 len(bases) = 2, class_id = 3이다. 메타클래스는 클래스 생성 시점에 호출되어 클래스 속성을 동적으로 추가할 수 있다.

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

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