예약어로 관리되는 객체
대표적으로 아무것도 없는 객체를 나타내는 None은 예약어다. type 클래스로 None을 확인하면 NoneType 클래스인 것을 볼 수 있다. 이 클래스는 하나의 객체만 만들어 사용한다.
type(None)
[결과]
NoneType
True/False도 예약어다. 이 예약어들은 내장 클래스 bool로 만들어진 2개의 객체가 할당된다.
참고로 파이썬의 다양한 객체들 (int, float, complex, 문자열, 튜플, 리스트 등등)은 0이거나 없다라는 의미일 때는 False를 반환하고 무엇이라도 존재한다면, 즉 원소가 하나라도 존재한다면 모두 True를 반환한다.
특이하게도 bool 클래스는 int 클래스를 상속한다.
bool.__base__
[결과]
int
범위를 처리하는 클래스
순환문을 실행할 때 범위를 표시하는 range를 사용해 객체를 만들었다. 이 클래스 이름은 예약어는 아니지만 내장 모듈에 저장되어 있어 언제든 사용할 수 있다. 또한 슬라이스 검색에 사용하는 slice 클래스도 범위 클래스처럼 만들어 사용할 수 있다.
slice와 range가 클래스인지 메타 클래스 type으로 확인해보자. 클래스를 생성한 클래스인 메타 클래스를 출력하면 둘 모두 클래스이다.
type(slice), type(range)
[결과]
type, type
두 클래스가 object 클래스와의 속성과 메소드의 차이를 알아보기 위해 집합으로 만든 후 차집합 연산으로 슬라이스와 범위만 가진 속성과 메소드를 확인해보자.
슬라이스는 특별한 기능 없이 속성만 가지고 있지만 range 클래스는 반복형 객체의 특성인 __len__, __getitem__이 있고 반복자로 변경할 수 있는 __iter__메소드도 가지고 있다.
s = slice(0, 1)
r = range(0, 1)
print(set(dir(s)) - set(dir(object)))
print(set(dir(r)) - set(dir(object)))
[결과]
{'indices', 'start', 'step', 'stop'} # 슬라이스 클래스는 object 클래스보다 4개의 속성이 더 구현되어 있다.
{'start', '__bool__', 'count', '__len__', '__reversed__', 'stop', '__getitem__',
'index', 'step', '__iter__', '__contains__'} # range 클래스는 반복형 클래스도 상속해 스페셜 속성과 메소드가 더 구현되어 있다.
참고
- 한권으로 개발자가 원하던 파이썬 심화 A to Z, 문용준/문성혁 저
'◎ Python > 파이썬 심화 (책)' 카테고리의 다른 글
[파이썬 심화] 16. 최상위 클래스 object (다시 공부 필요) (0) | 2022.09.14 |
---|---|
[파이썬 심화] 14. 클래스와 객체 구조를 알아보자 (0) | 2022.09.07 |
[파이썬 심화] 13. 클래스 정의하기 (1) | 2022.09.06 |
[파이썬 심화] 12. 함수에 여러 가지 종류의 매개변수를 설정할 수 있다! (1) | 2022.09.05 |
[파이썬 심화] 11. 함수 정의하기 (0) | 2022.09.02 |
자기계발 블로그