2011-03-30 1 views

ответ

6

Это не возможно (по крайней мере, не во всех случаях и не без грязных трюков). В вашем примере A является ссылкой на объект типа Foo. Объект не знает, как хранятся ссылки на него. Если вы пишете:

A = Foo(args) 
B = A 

затем A и B как ссылаться на один и тот же объект, и совершенно неотличимы, так что вы не смогли найти какой был использован для проведения первой ссылки на объект. Конечно, вы могли бы сканировать globals() для ссылки на объект, и тогда вы найдете A и B. Однако, если вы del A, все следы A исчезнут.

Что вы пытаетесь сделать? Если бы вы объяснили прецедент, возможно, мы могли бы предложить альтернативное решение, чем то, что вы просили.

+3

Некоторые объекты даже не имеют * any * name - 'mylist.append (Foo (args))' просто накладывает объект на конец mylist, не имея собственного имени вообще. – PaulMcG