파이썬 코드 읽어보기 - http/__init__.py

http - HTTP를 다루기 위한 패키지

파이썬 코드 읽어보기 두 번째 시리즈는 http입니다.

http 패키지는 다음과 같은 모듈을 포함하고 있습니다.

  • http.client
  • http.server
  • http.cookies
  • http.cookiejar

http 모듈에는 HTTP 상태 코드와 관련 메시지가 정의돼 있습니다.

http/__init__.py

1
2
3
4
5
6
7
8
9
10
11
12
class HTTPStatus(IntEnum):
def __new__(cls, value, phrase, description=''):
obj = int.__new__(cls, value)
obj._value_ = value

obj.phrase = phrase
obj.description = description
return obj
...
# success
OK = 200, 'OK', 'Request fulfilled, document follows'
CREATED = 201, 'Created', 'Document created, URL follows'

__new__() 가 무엇인지 부터 한 번 알아보겠습니다.

builtins.py

1
2
3
4
5
6
7
8
def __init__(self): # known special case of object.__init__
""" Initialize self. See help(type(self)) for accurate signature. """
pass

@staticmethod # known case of __new__
def __new__(cls, *more): # known special case of object.__new__
""" Create and return a new object. See help(type) for accurate signature. """
pass

https://docs.python.org/ko/3.7/reference/datamodel.html#basic-customization

__new__() 메소드는 새로운 오브젝트를 생성하고 반환합니다. 그 후 __init__() 메소드가 인스턴스 자체를 초기화 한다. 실행되는 순서는 __new__() -> __init__() 과 같습니다.

__init__.py 는 이정도로 하고 다음 파일 client.py 로 넘어가겠습니다.