如何区分函数和类方法?

如果变量引用的是函数或类方法,那么在它是类方法的情况下,尤其是在如给定示例中仍声明该类的情况下,如何确定该类是哪个并获得类类型。

例如。

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

Sebastian提到的一点,我希望能够在类中声明函数时区分它(当我得到的类型是一个函数时)而非绑定或未绑定的方法)。即。get_info(__init__)我希望能够在第一次调用发生的地方检测到,该方法被声明为类的一部分。

因为我在其周围放置了一个装饰器,并获得了 函数的句柄,所以我提出了这个问题,实际上我无法弄清楚是在类中还是将函数声明为独立函数

回答:

为了再次强调JF

Sebastian提到的一点,我希望能够在类中声明函数时(当我得到的类型是函数而不是绑定或未绑定的方法时)进行区分。即。get_info(__init__)我希望能够在第一次调用发生的地方检测到,该方法被声明为类的一部分。

因为我在其周围放置了一个装饰器,并获得了init函数的句柄,所以我提出了这个问题,实际上我无法弄清楚是在类中还是将函数声明为独立函数

你不能 JF

Sebastian的答案仍然是100%适用。当执行类定义的主体时,该类本身尚不存在。语句(__init__函数定义和get_info(__init__)调用)在新的本地名称空间中进行;在进行调用get_info时,__init__是对该名称空间中函数的引用,这与在类外部定义的函数没有区别。

以上是 如何区分函数和类方法? 的全部内容, 来源链接: utcz.com/qa/408147.html

回到顶部