マングリング
- Countercode: ナンドクカ (http://d.hatena.ne.jp/pokarim/20080419#1208624326)
Pythonには、アンダースコア二つ"__"から始まって、アンダースコア二つ"__"で終わらない名前の属性が、難読化される、というよくわからん仕様がある。
「アンダースコア2つで終わらない」という条件は意識していなかった。特殊メソッドは例外にしたくないだろうから、よく考えれば当たり前。挙動的に、前後の2文字のみを見ているので3文字目が"_"であっても関係ない。
ソースコードにすると以下のような感じ。Cのコードを読んだ訳でないので、あくまでも挙動からの類推。
def is_mangled(attr_name): if attr_name[:2] == '__' and not attr_name[-2:] == '__': return True return False
メモ
- yattの日記: pythonでバイナリダンプ (http://d.hatena.ne.jp/yatt/20080421/1208739036)
常山日記経由でメモ。使えそう。