패스잇
백엔드 개발 · 심화

Python에서 메타클래스(Metaclass)는 언제, 어떤 목적으로 사용되며, 이를 활용한 실제 설계 패턴의 예시를 들어 설명해주세요. `type()` 함수와의 관계도 함께 설명해주세요.

힌트 · 클래스의 클래스로서 런타임에 클래스 생성/수정, ORM 매핑, 플러그인 시스템 등 특정 규칙을 강제하는 용도로 활용될 수 있습니다.

클래스 생성 제어클래스 커스터마이징type싱글톤 패턴ORM

모범답안

메타클래스는 "클래스의 클래스"라고 생각하시면 됩니다. 즉, 클래스를 만드는 역할을 하는 클래스죠. 파이썬에서 클래스는 type()이라는 메타클래스의 인스턴스입니다.

메타클래스는 클래스가 생성될 때 그 생성 과정을 제어하거나, 클래스의 속성을 동적으로 변경하고 싶을 때 사용합니다. 예를 들어, 모든 클래스가 특정 속성을 반드시 가지도록 강제하거나, 싱글톤 패턴을 구현하거나, ORM에서 데이터베이스 테이블과 클래스를 매핑하는 등의 작업을 할 수 있습니다.

싱글톤 패턴을 예로 들면, 메타클래스를 사용하여 클래스의 인스턴스가 단 하나만 생성되도록 제어할 수 있습니다. type() 함수는 클래스의 타입을 반환하는 동시에, 동적으로 클래스를 생성하는 데에도 사용될 수 있습니다. 메타클래스를 사용하면 클래스 생성 시점에 원하는 로직을 추가하여 클래스를 더욱 유연하고 강력하게 만들 수 있습니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 Python 면접 질문

← Python 면접 질문 전체 보기