Python Code Reading 04に参加しました。Python Code Readingとは、Pythonのモジュールを読んで達人の技術を学ぼうという集まりです。今回も新橋にあるミラクルリナックスさんのセミナールームで行われ、参加者は会場いっぱいの40人ほどでした。
テーマはstringモジュールのTemplateクラスで、fgshunさんが発表されました。
Templateクラスは、文字列の雛型とそれへの埋め込みを扱うシンプルなクラスで、Python組み込みの文字列フォーマッティングと、ループやマクロ定義や継承などを実装する高機能なテンプレートエンジンの隙間を埋める存在です。
記法としてはUnixライクなプレースホルダが特徴なのですが、定義を一部変更することもでき、このカスタマイズにメタクラスの機構が使われています。最後の質疑ではこの設計の妥当性が話題になりました。
メタクラスを使うことによって、カスタマイズした正規表現の構築を、インスタンス生成時ではなくクラスの定義時に行うことができるというメリットがあるのでは、と私が発言したのですが、それに対して、クラス属性として直接渡してしまえば同じことができるという指摘がありました。確かにそうですね・・・。メタクラスを使ってクラスそのものの定義としてカスタマイズできたほうがすっきりと書ける気はしますが。
また、Templateクラスの文字列置換メソッドであるsubstituteメソッドとメタクラス内の正規表現定義とのあいだには依存関係があり、メタクラスに定義されている正規表現をTemplateクラスに移したほうが良いのではないかという意見がありました。
細かいテクニックの他に、小規模なコードでも設計の勉強になるというのがこの勉強会の良いところです。
勉強会の後は30名弱が残ってピザパーティーをしました。こちらも楽しかったです。

株式会社マリーチで企画、開発を担当する道須のブログです。
No comments
Comments feed for this article
Trackback link: http://www.marici.co.jp/blog/nowhere/2008/09/13/python-code-reading-04/trackback/