패스잇
백엔드 개발 · 심화

Python의 __slots__의 용도와 사용 시 이점은 무엇인가요?

힌트 · __dict__ 생략으로 인한 메모리 절약을 생각해보세요.

메모리어트리뷰트딕셔너리성능클래스

모범답안

__slots__는 Python 클래스에서 인스턴스 변수를 저장하는 방식을 최적화하는 데 사용됩니다. 기본적으로 Python은 각 인스턴스의 속성을 __dict__라는 딕셔너리에 저장합니다. 하지만 __slots__를 사용하면, 딕셔너리 대신 고정된 크기의 배열을 사용하여 속성을 저장합니다.

이렇게 하면 다음과 같은 이점이 있습니다.

  • 메모리 사용량 감소: 특히 많은 수의 인스턴스를 생성할 때, 딕셔너리를 사용하는 것보다 메모리 효율성이 훨씬 높아집니다.
  • 속도 향상: 속성에 접근하는 속도가 약간 빨라질 수 있습니다.

다만, __slots__를 사용하면 몇 가지 제약 사항이 있습니다.

  • 새로운 속성을 동적으로 추가할 수 없습니다.
  • __weakref__를 사용할 수 없습니다.

따라서, 메모리 사용량이 중요한 상황이고, 클래스의 속성이 미리 정의되어 변경될 필요가 없을 때 __slots__를 사용하는 것이 좋습니다.

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

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

함께 보는 Python 면접 질문

← Python 면접 질문 전체 보기