3

CherryPyチュートリアルを読んで、私はこれに出くわしました

class HelloWorld(object):
    def index(self):
        return "Hello World!"
    index.exposed = True

ということでしたか。メソッド インデックスのローカル スコープで変数が公開されていますか? もしそうなら、expose の値を変更できますか? クラス定義をオブジェクト自体として公開するには、PythonのMetaObjectプロトコルと関係があると思います。

4

2 に答える 2

4

関数は、Python の第一級オブジェクトです。関数定義は、関数オブジェクトを作成し、それを関数の名前にバインドします。関数オブジェクトは属性を持つことができ、それがここに表示されています。関数属性の存続時間は、関数オブジェクトの存続時間に拘束されますが、関数内のローカル変数の存続時間は、関数の 1 回の実行に拘束されます。それらは完全に分離されています。

于 2012-11-03T21:37:10.663 に答える
2

いいえ、関数 index のローカル変数ではなく、その関数の属性です。はい、関数の外でも変更できます。

関数属性に関するPEP 232を読んでください。

例:

In [2]: def foo():pass
   ...: 

In [3]: foo.bar="text"

In [4]: foo.bar
Out[4]: 'text'
于 2012-11-03T21:37:38.423 に答える