说我有一个功能:
def foo():
"""foo docstring"""
print(foo.__doc__)
如何在不使用打印功能中的功能名称foo
的情况下编写此代码?
请注意,我已经阅读了类似的question,该文本允许以字符串的形式访问函数的名称,但据我所知,不允许访问该函数本身。
答案 0 :(得分:1)
答案比我预期的简单得多。要访问函数本身而不只是名称,请对名称应用eval()。
import inspect
def foo():
"""zxy"""
print(fself().__doc__)
def fself():
"""returns parent function when called"""
return eval(inspect.stack()[1][3])
def bar():
"""abcdefg"""
print(fself().__doc__)
bar()
foo()
此代码产生:
>abcdefg
>zxy
很棒的是,我现在可以将其用作模块并在其他脚本中访问fself。