純粋な好奇心から:関数の割り当てられた属性の辞書/リストに(その関数内から)アクセスする簡単な方法(2行以下のコード)はありますか?
例えば:
def func(*args):
print("# of arguments = {0} ".format(len(args))) # normal arguments
print("# of attributes = {0}".format(len(func_attrs))) # function-attributes
func()
func.func_attr_1 = 'How do i get all attributes from within the associated function?'
func.func_attr_2 = 'How do i get all attributes from within the associated function?'
関数は呼び出し可能なオブジェクトであるため、関数に属性を提供することは可能ですが、これらの属性のリストに簡単にアクセスする方法はないようです。
locals()
役に立たglobals()
なかった。
dir()
トリックを行うようですが、属性をフィルタリングする必要があります。事前に属性名がわからない場合、これはやや不便です。
属性を割り当てることができれば、内部からディレクトリにアクセスする方法が必要です。
更新:
属性にアクセスする前に、関数を実際に呼び出す/呼び出す=インスタンス化するのを完全に忘れていました。... 悪い!- 答えてくれてありがとう ;-)
当然私は試しfunc.__dict__
てみdir(func)
ましたが、そうする前に関数オブジェクトをインスタンス化していませんでした...そして私の元のテストでは、最初に関数内から属性を定義し、次に関数を呼び出さなかったが、関数にアクセスしようとしました-outer-scope からの属性 -当然失敗しました!