백엔드 개발 · 심화
Python의 __slots__의 용도와 사용 시 이점은 무엇인가요?
힌트 · __dict__ 생략으로 인한 메모리 절약을 생각해보세요.
메모리어트리뷰트딕셔너리성능클래스
모범답안
__slots__는 Python 클래스에서 인스턴스 변수를 저장하는 방식을 최적화하는 데 사용됩니다. 기본적으로 Python은 각 인스턴스의 속성을 __dict__라는 딕셔너리에 저장합니다. 하지만 __slots__를 사용하면, 딕셔너리 대신 고정된 크기의 배열을 사용하여 속성을 저장합니다.
이렇게 하면 다음과 같은 이점이 있습니다.
- 메모리 사용량 감소: 특히 많은 수의 인스턴스를 생성할 때, 딕셔너리를 사용하는 것보다 메모리 효율성이 훨씬 높아집니다.
- 속도 향상: 속성에 접근하는 속도가 약간 빨라질 수 있습니다.
다만, __slots__를 사용하면 몇 가지 제약 사항이 있습니다.
- 새로운 속성을 동적으로 추가할 수 없습니다.
__weakref__를 사용할 수 없습니다.
따라서, 메모리 사용량이 중요한 상황이고, 클래스의 속성이 미리 정의되어 변경될 필요가 없을 때 __slots__를 사용하는 것이 좋습니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 Python 면접 질문
- Python의 메모리 관리와 가비지 컬렉션 동작 방식에 대해 설명해주세요.
- Python의 딕셔너리 내부 구현과 해시 충돌 처리 방식을 설명해주세요.
- Python의 metaclass란 무엇이며, 어떤 상황에서 사용하나요?
- Python의 descriptor란 무엇이며, 어떻게 동작하나요?
- Python의 GIL(Global Interpreter Lock)이 멀티스레딩 기반 동시성 프로그래밍에 미치는 영향과 이를 극복하기 위한 대표적인 전략들을 설명하고, 각 전략의 장단점을 비교하여 설명해주세요.
- Python에서 메타클래스(Metaclass)는 언제, 어떤 목적으로 사용되며, 이를 활용한 실제 설계 패턴의 예시를 들어 설명해주세요. `type()` 함수와의 관계도 함께 설명해주세요.