0

如何识别当前被修饰的函数是方法(属于类)还是函数?

class ClassA:
  @mydecorator
    def method(self)
    pass

  @staticmethod

@mydecorator
def function()
  pass

mydecorator 需要知道修饰函数是否为:

  • 一个方法(is_method)
  • 静态方法 (is_static)
  • 一个类方法(is_classmethod)
  • 全局函数 (is_function)

我们应该怎么做?

谢谢!

4

1 回答 1

0
is_method = lambda f: hasattr(f, 'im_self')

is_static = lambda f: isinstance(f, types.FunctionType)

is_classmethod = lambda f: getattr(f, 'im_self', None) is not None

is_function = lambda f: not hasattr(f, 'im_self')

http://docs.python.org/2/reference/datamodel.html#types

于 2013-09-04T09:35:35.937 回答