【发布时间】:2010-10-16 06:59:31
【问题描述】:
如果变量引用函数或类方法,我如何找出它是哪一个并获取类类型,以防它是类方法,特别是当类仍如给定示例中那样声明时.
例如。
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 和 J. F. Sebastian 的前两个回复后更新问题
为了再次强调 J.F. Sebastian 提到的一点,我希望能够在类中声明函数时区分它(当我得到的类型是函数而不是绑定或未绑定方法时)。 IE。第一次调用get_info(__init__) 的地方我希望能够检测到它的方法被声明为类的一部分。
这个问题出现了,因为我在它周围放置了一个装饰器,它获得了 init 函数的句柄,我实际上无法确定一个方法是在一个类中声明还是作为独立功能
【问题讨论】:
-
装饰器没有理由同时适用于未绑定的函数和方法函数。你为什么要这样做?为什么没有两个装饰器?
标签: python reflection metaprogramming