[파이썬] 내장 클래스

I. 예약어로 관리되는 객체

가. None 객체

  • 아무것도 없는 객체를 나타내는 예약어로 None 객체가 있음
  • [예제] None 객체 확인
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
print(type(None)) # None 객체 생성 클래스
print(None.__bool__()) # None 객체는 항상 False
print(bool(None))
[결과]
<class 'NoneType'>
False
False
print(type(None)) # None 객체 생성 클래스 print(None.__bool__()) # None 객체는 항상 False print(bool(None)) [결과] <class 'NoneType'> False False
print(type(None))       # None 객체 생성 클래스

print(None.__bool__())  # None 객체는 항상 False
print(bool(None))

[결과]
<class 'NoneType'>
False
False

나. bool 클래스의 객체

  • True/False는 예약어로, 내장 클래스 bool로 생성된 2개의 객체가 할당
  • [예제] bool 클래스 확인
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# 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
# 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
# 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 클래스 확인
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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__'}
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__'}
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

콘텐츠 사용 시 출처 표기 부탁 드리고, 댓글은 큰 힘이 됩니다^^