【发布时间】:2011-08-12 20:07:13
【问题描述】:
This answer 表示函数有一个内置的__name__ 属性,可以从函数外部 使用,即print f.__name__。但是,如何从 within 函数本身获取此属性?
仅使用不合格的__name__ 无济于事:print __name__ 打印出__main__。
在f() 中使用print f.__name__ 看起来很愚蠢——我也可以输入"f"。
或者,是否有一种self 函数对象,即我可以获得指向以通用方式执行的函数的指针吗?
我不喜欢this question 中提出的方法 - 感觉为如此简单的任务破解堆栈不是正确的方法。
动机:我有一本{keyword:function} 的字典,从输入中读取关键字并执行适当的函数。我希望每个函数只执行一次,所以我希望每个函数在执行时将自己注册到某个数据结构中。我知道我可以在字典本身中做到这一点,但我想为此使用单独的数据结构。
Python 版本是 2.6.4 BTW
【问题讨论】:
-
只需链接到这个答案,它解决了标题中的问题:stackoverflow.com/a/5067654/547578
-
感谢@fossilet,但正如我在使用调用堆栈的问题中所说的那样感觉......不知道,太hacky
-
我觉得你觉得 inspect 太“老套”很幽默。授予导航多维堆栈的语法可能需要阅读文档,但它是有效的。这是另一个可能很有趣的 hacky 方法:将函数作为参数传递给自身。
标签: python