我在 PY 有一个装饰器。它是一种方法,将函数作为参数。我想根据传递的函数创建一个目录结构。我正在为父目录使用模块名称,但想为子目录使用类名。我不知道如何获取拥有 fn 对象的类的名称。
我的装饰器:
def specialTest(fn):
filename = fn.__name__
directory = fn.__module__
subdirectory = fn.__class__.__name__ #WHERE DO I GET THIS
最佳答案
如果fn
是一个instancemethod
,那么您可以使用fn.im_class
。
>>> class Foo(object): ... def bar(self): ... pass ... >>> Foo.bar.im_class __main__.Foo
请注意,这将不在装饰器中工作,因为函数仅在定义类之后转换为实例方法(即,如果@ specialTest
用于装饰 bar
,它不会工作;如果可能的话,在那个时候做它必须通过检查调用堆栈或其他同样不愉快的事情来完成)。
关于python - 从装饰器中获取 Python 函数的所属类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7680446/