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

대부분의 타입은 내장 객체로든 새 모듈에서든 접근할 수 있지만, 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’ 타입은 이미 유효한 파이썬 식별자인 ‘classobj’, ‘instancemethod’, ‘dictproxy’로 이름이 변경되어, 이를 가능하게 했습니다.

하위 호환성

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

참조 구현

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