変数が関数またはクラスメソッドのいずれかを参照している場合、クラスメソッドが特定の例のように宣言されている場合は、そのクラスがどれであるかを調べてクラスの型を取得するにはどうすればよいでしょうか。関数とクラスメソッドを区別する方法は?
例えば、
def get_info(function_or_method):
print function_or_method
class Foo(object):
def __init__(self):
pass
get_info(__init__)
def bar():
pass
get_info(bar)
更新 はJFセバスチャンは、関数がクラス内で宣言されているとき、私はそれを区別できるようにするために触れたポイントを再び強調するためにダビデとJFセバスチャンからの最初の2つの応答の後に質問します(私が得るタイプが関数であり、バインドされたメソッドまたはバインドされていないメソッドではありません)。すなわち、 get_info(__init__)
への最初の呼び出しが発生したところで、私はそのメソッドがクラスの一部として宣言されていることを検出できるようにしたいと考えています。
この質問は、私はその周りにデコレータを入れていますし、それがのinit機能へのハンドルを取得し、メソッドがクラス内またはスタンドアロン関数として宣言されている場合、私は実際に把握することはできませんので、思いつきました
デコレータが結合していない機能や方法の機能の両方のために働くべきでない理由はありません。なぜあなたはこれをやろうとしていますか?なぜ2つのデコレータを持っていないのですか? –