패스잇
백엔드 개발 · 중급

Python의 __init__과 __new__의 차이점은 무엇인가요?

힌트 · 인스턴스 생성 단계와 초기화 단계를 구분해보세요.

객체 생성인스턴스 초기화__new__ 클래스 메서드__init__ 인스턴스 메서드반환 값

모범답안

__new____init__은 Python에서 객체 생성과 초기화에 관련된 특별한 메서드입니다.

__new__는 클래스 메서드이고, 객체의 인스턴스를 실제로 생성하는 역할을 합니다. 즉, 메모리 공간을 할당하고 객체를 만드는 것이죠. __new__는 클래스를 인자로 받아 해당 클래스의 새로운 인스턴스를 반환해야 합니다. 만약 __new__None을 반환하면 __init__은 호출되지 않습니다.

반면 __init__은 인스턴스 메서드이고, 객체가 생성된 후에 그 객체를 초기화하는 역할을 합니다. 즉, 객체의 속성을 설정하는 등의 작업을 수행합니다. __init__은 생성된 인스턴스를 첫 번째 인자(self)로 받습니다.

따라서 __new__는 객체 생성의 '전' 단계, __init__은 객체 생성의 '후' 단계라고 생각하면 이해하기 쉽습니다. __new__를 오버라이딩하는 경우는 흔하지 않지만, 불변 객체를 만들거나 객체 생성 과정을 특별하게 제어해야 할 때 사용될 수 있습니다.

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

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

함께 보는 Python 면접 질문

← Python 면접 질문 전체 보기