초보 개발자

29강 __slots__의 효과 본문

Python/윤성우 열혈 파이썬

29강 __slots__의 효과

taehyeki 2022. 1. 25. 10:17

[__dict__의 단점과 그 해결책]

파이썬은 __dict__의 이름으로 객체 하나당 하나의 딕셔너리를 할당한다. 그런데 딕셔너리는 리스트나 튜플에 비해 메모리 사용량이 많다. 따라서 많은 수의 객체를 생성해야 하는 경우에 부담이 될 수 있다.

다음과 같이 __slots__를 추가해주면 dict가 생성이 되지 않고 변수는 n과 a밖에 설정할 수 없다는 뜻이다.

따라서 self.m 이렇게 정의가 불가능하고 self.n, self,a 와 같이 설정해야한다. 그리고 전 처럼 p.b = 10 이렇게 접근 및 생성이 불가능하다. 전에는 __dict__라는 딕셔너리가 생성이 되어 여기서 변수를 관리하고 그걸 참조하는 역할을 하였지만 지금은 아니기 때문에 변수 n,a 두개만 가지고 있는 객체라고 할 수 있다.

 

즉 __slots__ ('n','a')를 삽입함으로써 객체에 변수를 추가하는 것은 불가능, 그리고 __dict__가 생기지 않음, 객체별로 __slots__을 같는 것이 아닌 클래스당 하나의 __slots__만 생성되므로 매우 큰 메모리상 이득을 볼 수 있음

 

__dict__의 경우 객체별로 가진다.

'Python > 윤성우 열혈 파이썬' 카테고리의 다른 글

31강 네스티드 함수와 클로저  (0) 2022.01.25
30강 프로퍼티  (0) 2022.01.25
28강 정보은닉과 __dict__  (0) 2022.01.24
27강 연산자 오버로딩  (0) 2022.01.24
26강 스페셜 메소드  (0) 2022.01.18