続: Python での組み込み型をより自然な名前にする

なんかしらんけど、前のエントリはPythonistaをたいへん刺激してしまったようだ。べつにもとの名前を使えなくするわけじゃなく、単にエイリアスを追加するだけなのに!

そこで、Pythonistaのお怒りを沈静化するべく、__builtins__を汚染しないように改造してみた。

## utypes.py
__all__ = (
  'Str', 'List', 'Dict', 'Tuple', 'Set', 'Object', 'Type',
  'Int', 'Long', 'Float', 'Complex', 'Bool', 'Unicode', 'File',
)
Str     = str
List    = list
Dict    = dict
Tuple   = tuple
Set     = set
Object  = object 
Type    = type
Int     = int 
Long    = long
Float   = float
Complex = complex
Bool    = bool
Unicode = unicode
File    = file 

使い方:

### utypes を import したときだけ利用可能(__builtins__ を汚染しない)
>>> from utypes import *   # or Str, List, Dict
>>> print Str, List, Dict
<type 'str'> <type 'list'> <type 'dict'>

### str や list や dict という変数名を使っても無問題。ブラボー!
>>> str = "foo"
>>> type(str) == Str
True
>>> list = [1, 2, 3]
>>> isinstance(list, List)
True

### また大文字から始まるので、クラス名としても自然である。ブラボー!
>>> dict = Dict([("one", 1), ("two", 2)])
>>> print dict
{'two': 2, 'one': 1}

前にも書いたけど、Pythonのtype名が小文字始まりであることについては、特に技術的な利点とかそういうのがあるわけじゃなくて、単に最初の仕様がそうであって、それがそのまま継続されているっていうだけだよね? (違ってたら教えてください) だから大文字始まりのエイリアスを作るぐらい、そんなに目くじらを立てることとは思えない。それなら「typedef unsigned int uint」のほうがよっぽどマズい。


それから、pashango_p さん:

でも個人的に言うと、ローカル変数が命名しにくいからという理由で__builtins__を書き換えるのが一番ダメかな。

http://d.hatena.ne.jp/kwatch/20090716#c1247756361

『書き換え』じゃなくて、「追加」ね。べつにもとのstrやlistやdictを使えなくしているわけじゃないので。