2012-03-22 65 views
0

如果我有一些對象的ID例如,我怎樣才能找出所有指向它的對象?找到指向某個對象的所有對象? (python)

+1

你不能,至少,Python環境之內。 – Amber 2012-03-22 00:42:24

+0

你希望用這些信息來完成什麼? – 2012-03-22 00:43:25

+1

http://stackoverflow.com/questions/1396668/python-get-object-by-id – John 2012-03-22 00:43:42

回答

1
import gc 

class Node(object): 
    def __init__(self, data): 
     self.data = data 
     self.next = None 

if __name__ == "__main__": 
    a = Node(5) 
    a.next = Node(4) 
    a.next.next = Node(3) 
    # returns a list of dictionary of the object(s) referring to a.next.next 
    diction = gc.get_referrers(a.next.next)[0] 
    diction['next'] = None 
    print a.next.next 

垃圾收集器有一些巧妙的功能

get_referrers(...) 
    get_referrers(*objs) -> list 
    Return the list of objects that directly refer to any of objs. 

get_referents(...) 
    get_referents(*objs) -> list 
    Return the list of objects that are directly referred to by objs. 
+1

我不認爲這是一種將它稱爲雙鏈表的方式。這基本上只是依靠gc自動跟蹤引用,而不是將引用存儲在對象上。從技術上來說,如果您將反向引用存儲在您自己的單獨字典中,或者僅僅將它們存儲在節點對象本身中,那麼技術上不會有區別...因此...雙鏈表。它只是在參照管理的地方玩遊戲。你最終會寫出一個「後退」的方法,並可能將其存儲在Node上。 – jdi 2012-03-23 00:20:38

+0

我同意,但它是迄今爲止我發現的最接近的東西lol – Jae 2012-03-23 01:04:04

+0

是的,我的觀點是,我認爲它不會很好地將此作爲能夠實現鏈接列表的能力的證明,該列表也可以倒退: - ) – jdi 2012-03-23 01:40:11