мне интересно, если это вообще возможно в Python для stringify идентификатор переменной/символ - то есть функция, которая ведет себя следующим образом:Любой способ подстроить переменную id/symbol в Python?
>>> 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
Я смотрю фактический исходный код NameError в python26/Python/ceval.c, так как очевидно, что NameError действительно получает имя символа. (Как я заметил ниже, symbol_name (non_existent) дает трассировку с сообщением «NameError: name» non_existent «не определено».) PyTuple_GetItem (и PyDict_GetItem) дает имя символа, которое я хочу, но я не нашел интерфейс, который обертывает он и показывает это пользователю. Поэтому, если кто-то не докажет меня иначе, это может быть невозможно. Однако для любой переменной экземпляра класса возможно переопределить __getattribute__ и grepping NameError. – OTZ