如果变量引用的是函数或类方法,那么在它是类方法的情况下,尤其是在如给定示例中仍声明该类的情况下,如何确定该类是哪个并获得类类型。
例如。
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的前两个回答之后更新问题。 为了再次强调JF Sebastian提到的一点,我希望能够在类中声明函数时区分它(当我得到的类型是一个函数时)而非绑定或未绑定的方法)。即。get_info(__init__)我希望能够在第一次调用发生的地方检测到,该方法被声明为类的一部分。
get_info(__init__)
因为我在其周围放置了一个装饰器,并获得了 init 函数的句柄,所以我提出了这个问题,实际上我无法弄清楚是在类中还是将函数声明为独立函数
为了再次强调JF Sebastian提到的一点,我希望能够在类中声明函数时(当我得到的类型是函数而不是绑定或未绑定的方法时)进行区分。即。get_info(__init__)我希望能够在第一次调用发生的地方检测到,该方法被声明为类的一部分。 因为我在其周围放置了一个装饰器,并获得了init函数的句柄,所以我提出了这个问题,实际上我无法弄清楚是在类中还是将函数声明为独立函数
为了再次强调JF Sebastian提到的一点,我希望能够在类中声明函数时(当我得到的类型是函数而不是绑定或未绑定的方法时)进行区分。即。get_info(__init__)我希望能够在第一次调用发生的地方检测到,该方法被声明为类的一部分。
因为我在其周围放置了一个装饰器,并获得了init函数的句柄,所以我提出了这个问题,实际上我无法弄清楚是在类中还是将函数声明为独立函数
你不能 JF Sebastian的答案仍然是100%适用。当执行类定义的主体时,该类本身尚不存在。语句(__init__函数定义和get_info(__init__)调用)在新的本地名称空间中进行;在进行调用get_info时,__init__是对该名称空间中函数的引用,这与在类外部定义的函数没有区别。
__init__
get_info