external method について

external method では、明示的に指定した以外にもう一つ引数が渡されるようです。これは、Zope Book では self と記されていて、実行コンテキストを指しているようです。試しに、次のような external method を書いてみました*1

def foo(self, name="xxx"):
    return dir(self)

これを実行したら、実行コンテキストに含まれるメンバがたくさん表示されました。
ちなみに、このコンテキストのフォルダに foo_img という画像オブジェクトがあるとき、

def foo(self, name="xxx"):
    return self.foo_img

のようにすると、

<img ...>

という HTML タグが返ってきます。面白いです。return getattr(self, "foo_img") でも良いのかな?

ちなみに

external merhod の定義された外部ファイルを修正したら、External Method オブジェクトを更新しなくてはいけないのかなあ。これは、メモです。

*1:最初、return self でなくて print self としてしまい、ハマりました。