Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- NeXT
- react
- 카톡
- flask
- node
- async
- 채팅
- 파이썬
- 중급파이썬
- pandas
- wetube
- SAA
- EC2
- git
- Props
- SSA
- merge
- docker
- 튜플
- MongoDB
- dict
- AWS
- TypeScript
- Vue
- S3
- Class
- RDS
- lambda
- socket io
- crud
Archives
- Today
- Total
초보 개발자
29강 __slots__의 효과 본문
[__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 |