我想知道是否有可能在所有的Python字符串化 变量ID /符号 - 也就是说,行为如下功能:任何方式来在Python中对变量id /符号进行字符串化?
>>> symbol = 'whatever'
>>> symbol_name(symbol)
'symbol'
现在,它是很容易做到这一点上函数或类(如果是 直接引用的对象):
>>> def fn(): pass
>>> fn.func_name
'fn'
但是我正在寻找能够在所有情况下,即使 间接对象引用作品的一般方法。我想过使用id(var) ,但没有运气。
有没有办法做到这一点?
可能重复的[python,我可以打印原始的var名称吗?](http://stackoverflow.com/questions/544919/python-can-i-print-original-var-name) – Anycorn 2010-06-08 19:39:43
我正在看在python26/Python/ceval.c中实际的NameError源代码显然是NameError获得符号名称的权利。 (正如我在下面指出的,symbol_name(non_existent)产生一个回溯,其中“NameError:name'non_existent'未定义”消息。)PyTuple_GetItem(和PyDict_GetItem)产生我想要的符号名称,但是我还没有找到一个接口它并将其展示给用户。所以除非别人证明我,否则这可能是不可能的。对于类的任何实例变量,可以通过覆盖__getattribute__和grep NameError来实现,但是。 – OTZ 2010-06-08 20:35:59