It’s…
プログラミング言語Pythonにおいて、Pythonらしい、といった概念をPythonicと呼ぶことがある。 Pythonicらしい書き方を知るにはZen of Pythonや『Effective Python』の第一章を参照すればその一端を知ることができる。
Effective Python ―Pythonプログラムを改良する59項目
- 作者: Brett Slatkin,石本敦夫,黒川利明
- 出版社/メーカー: オライリージャパン
- 発売日: 2016/01/23
- メディア: 大型本
- この商品を含むブログ (5件) を見る
一方で、Pythonesqueという言葉もある。Pythonesqueとはプログラミング言語Pythonの名称のもとになったイギリスのコメディグループMonty Pythonのスケッチの不条理さを表した造語である。 折角なので「チーズショップ」(第3シーズン第7話)スケッチを引用する。
普段はPythonicな書き方を目指すべきであるが、たまにはPythonesqueな書き方をしてもよいのではないだろうか。 今回は、Pythonの特殊メソッドを変な風に実装することでPythonesqueなクラスを書く。 先ほど引用した「チーズショップ」スケッチのような辞書クラスを定義してみよう。
import collections class CheeseShop(collections.UserDict): def __len__(self): return 0 def __getitem__(self, item): raise KeyError if __name__ == "__main__": shop = CheeseShop(Caerphilly="here") print("len(shop) = {}".format(len(shop))) for key in ("Red Leicester", "Tilsit", "Caerphilly"): try: print(key, shop[key]) except KeyError: print("{} is not here!".format(key))
出力結果は以下の通りになる。
len(shop) = 0 Red Leicester is not here! Tilsit is not here! Caerphilly is not here!
絶対にこのような実装をしてはいけない(普通は良心が否定するか、レビュワーに殴られる)。 しかし、Python言語を理解する上では中々面白いと思う。