我将用一个例子来解释:
list_1 = [1, 2, 3]
list_2 = list_3 = list_1 # reference copy
print(magic_method(list_1))
# Should print ['list_1', 'list_2', 'list_3']
set_1 = {'a', 'b'}
print(magic_method(set_1))
# Should print ['set_1']
需求:返回指向相同引用的所有变量名称。这在Python中是否可能?
我在考虑遍历globals()
和locals()
,然后将id
进行比较。有更好的方法吗?
def magic_method(obj): return [name for name, val in globals().items() if val is obj]
,您希望有更直接的东西? - jdehesalist_4 = [list_1, 0]; class A: foo = list_1
. - Ashwini Chaudharygc.get_referrers
的递归解决方案?但这将非常非常棘手,很可能是不可能的。例如,请查看此处:http://ideone.com/rH1keq。[[1, 2, 3],0]
和'list_4':[[1, 2, 3],0]
是两个单独的条目,但实际上是相同的引用。有'foo':[1, 2, 3]
,但是谁包含foo
?最后对于插槽,它只是说:<__main__.A object at 0x2ae6efcf3ca8>。 - Ashwini Chaudhary