2008年9月12日金曜日

RCP 4th memo

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
ひそかにcherrypy/TGを一人で読んでました(裏番組)
質疑応答では一応突っ込みを入れましたが・・・。

RCP 4th, string.Templateにみるmetaclass

発表者:伊藤俊輔

3.0でString moduleの廃止が検討されたが、Templateがあるのでやめになった。3.0でもっと強力になるらしい(ats)

予習内容:
最終的には%に落ちる。
string.pyがimport された時点で_TemplateMetaclassのpatternがcompileされる。

_TemplateMetaclass::__init__の引数のdctはclass Templateのクラス変数。

30分近く待つ
プロジェクタの準備が整わない・・・

ざらっとみまわすとMac派が多い。


- 用途と使い方
- メソッド
- メタクラス


文字列の雛形を用意しておいて、後から値を当てはめる
データ出力時によく使われる。

%演算
プレースホルダ %s etc
複数あるときはtupleを与える。

複数与えるときは、順番だけだとつらい。

%(name)というものがある。 %(\([a-zA-Z]+\))?[sf...])
その場合はtupleではなくdictであたえる。

%がほしいときは%%としてエスケープ
キーが無いときはKeyError


発表者かなり上がり気味。


メソッド
substitute(dict..)
substitute(**kw)
実装:re.subでの置換


使わなかったプレースホルダはそのまま残る。
プレースホルダ名はpython識別子のみ。i.e. 数字のみはダメ
$は$でエスケープ


ふとおもったのだが、
"""A string class for supporting $-substitutions."""
__metaclass__ = _TemplateMetaclass

delimiter = '$'
idpattern = r'[_a-z][_a-z0-9]*'
これの順番って変えても動くの?


いんべいるど~~~~って何?
インバリッドのこと?

lines = self.template[:i].splitlines(True)
スタートするところまで取り出す。

あーぎす?
アーギュメンツのこと?



メタクラスを使う必然性は?
google code searchしたか?
テンプレートにunicodeが含まれているとなにがおこるか?(re.Uしてない)
キーにunicodeは許されないだろうからOK?

callable


module ns
func ns
func ns

module ns
class ns
class ns

名前空間の解決:近くのものから取ってくる。
動的スコープ、静的スコープ


patternの書き換えには限度がある。
どう書き換えたいのか???
何か仕様で押し付けられたとき?!


哲学・・・入ってきた?

0 件のコメント: