I. 예약어로 관리되는 객체
가. None 객체
- 아무것도 없는 객체를 나타내는 예약어로 None 객체가 있음
- [예제] None 객체 확인
print(type(None)) # None 객체 생성 클래스 print(None.__bool__()) # None 객체는 항상 False print(bool(None)) [결과] <class 'NoneType'> False False
나. bool 클래스의 객체
- True/False는 예약어로, 내장 클래스 bool로 생성된 2개의 객체가 할당
- [예제] bool 클래스 확인
# True와 False 객체는 bool 클래스로 생성 print(type(True)) print(type(False)) # 원소가 없으면 False, 있으면 True 반환 print(bool('')) print(bool('10')) # 논리값 True/False는 정수 클래스를 상속해서 만든 객체로 정수와의 덧셈 연산 가능 print(True + 1) print(False + 1) print(True + True) [결과] <class 'bool'> <class 'bool'> False True 2 1 2
II. 범위 처리 클래스
- slice와 range는 메타클래스 type으로 확인 시 모두 클래스로 확인
- [예제] slice와 range 클래스 확인
print(type(slice), type(range)) s = slice(0, 1) r = range(0, 1) # slice 클래스는 object 클래스보다 4개의 속성을 더 구현 print(set(dir(s)) - set(dir(object))) # range 클래스는 object 클래스보다 다수 속석을 더 구현 print(set(dir(r)) - set(dir(object))) [결과] <class 'type'> <class 'type'> {'start', 'stop', 'step', 'indices'} {'stop', '__bool__', 'start', 'index', '__contains__', '__len__', 'count', '__reversed__', 'step', '__getitem__', '__iter__'}
[참고]
- 잇플, “한 권으로 개발자가 원하던 파이썬 심화 A to Z”, 2019.11