Following system colour scheme Selected dark colour scheme Selected light colour scheme

Python 개선 제안 한국어 번역

PEP 294 – types 모듈의 타입 이름

Author:
Oren Tirosh <oren at hishome.net>
Status:
Rejected
Type:
Standards Track
Created:
19-Jun-2002
Python-Version:
2.5
Post-History:


Table of Contents

번역·라이선스 안내

이 비공식 한국어 번역은 원문 Copyright 절의 Public Domain 조건에 따라 제공합니다. 원저자와 공식 원문은 그대로 표시합니다. 수정되지 않은 기준 원문 · 공식 최신판

초록

이 PEP는 types 모듈에 있는 모든 기본 Python 타입에 대해 타입 이름과 일치하는 심볼을 types 모듈에 추가할 것을 제안합니다.:

types.IntegerType -> types.int
types.FunctionType -> types.function
types.TracebackType -> types.traceback
 ...

현재 types 모듈에 있는 대문자로 시작하는 긴 이름들은 폐지될 예정입니다.

이 변경으로 types 모듈은 new 모듈을 대체할 수 있게 됩니다. new 모듈은 폐지되며 PEP 4에 등재될 것입니다.

결정

타입 이름을 한곳에 모아 두는 저장소는 실수였습니다. “types” 모듈과 “new” 모듈 모두 Python 3.0으로 이어져서는 안 됩니다.

그때까지는 제안된 대로 이 모듈들을 갱신하는 것이 의미가 없습니다. 그렇게 하면 그에 상응하는 이점 없이 혼란만 초래할 것입니다.

대신 일부 내부 타입(프레임, 함수 등)이 이 모듈들 외에는 어디에도 존재하지 않는 문제는 해당 타입들을 __builtin__이나 sys에 추가하여 해결할 수 있습니다. 이렇게 하면 Python 3.0으로 더 매끄럽게 전환할 수 있습니다.

근거

같은 객체에 대해 두 벌의 이름을 사용하는 것은 중복되며 혼란스럽습니다.

2.2 이전 버전의 Python에서는 많은 타입 이름과 일치하는 심볼을 해당 타입의 팩토리 함수가 차지하고 있었습니다. 이제 모든 기본 타입이 각자의 팩토리 함수와 통합되었으므로, 타입 이름을 타입 객체를 가리키는 데 일관되게 사용할 수 있습니다.

대부분의 타입은 내장 객체로 접근하거나 new 모듈에서 접근할 수 있지만, traceback과 제너레이터 같은 일부 타입은 types 모듈을 통해서만, 그것도 타입 이름과 일치하지 않는 이름으로만 접근할 수 있습니다. 이 PEP는 모든 기본 타입에 하나의 이름 체계로 접근하는 일관된 방법을 제공합니다.

명세

types 모듈은 다음 테스트를 통과해야 합니다:

import types
for t in vars(types).values():
    if type(t) is type:
assert getattr(types, t.__name__) is t

‘class’, ‘instance method’, ‘dict-proxy’ 타입은 이미 유효한 Python 식별자인 ‘classobj’, ‘instancemethod’, ‘dictproxy’로 이름이 바뀌었으므로 이것이 가능합니다.

하위 호환성

널리 사용되고 있으므로 향후 버전에서 types 모듈의 긴 이름들을 실제로 제거할 계획은 없습니다. 다만 새 코드에서 긴 이름을 사용하지 않도록, 문서와 라이브러리 소스에서는 긴 이름을 바꿔야 합니다.

참조 구현

참조 구현은 issue #569328에서 확인할 수 있습니다.