変数が関数またはクラス メソッドのいずれかを参照している場合、特に指定された例のようにクラスがまだ宣言されている場合に、それがクラス メソッドである場合に、それがどちらであるかを調べてクラス タイプを取得するにはどうすればよいですか。
例えば。
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)
David と JF Sebastian からの最初の 2 つの応答の後の質問への更新 JF Sebastian
がほのめかした点を再度強調するために、クラス内で関数が宣言されているとき (取得している型が関数のとき) を区別できるようにしたいと考えています。バインドされたメソッドまたはバインドされていないメソッドではありません)。すなわち。への最初の呼び出しがget_info(__init__)
発生する場所で、そのメソッドがクラスの一部として宣言されていることを検出できるようにしたいと考えています。
この質問は、デコレーターを配置していて、init関数へのハンドルを取得し、メソッドがクラス内で宣言されているか、スタンドアロン関数として宣言されているかを実際に把握できないために発生しました。