ひそかに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 件のコメント:
コメントを投稿