如果我有一些對象的ID例如,我怎樣才能找出所有指向它的對象?找到指向某個對象的所有對象? (python)
回答
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.
我不認爲這是一種將它稱爲雙鏈表的方式。這基本上只是依靠gc自動跟蹤引用,而不是將引用存儲在對象上。從技術上來說,如果您將反向引用存儲在您自己的單獨字典中,或者僅僅將它們存儲在節點對象本身中,那麼技術上不會有區別...因此...雙鏈表。它只是在參照管理的地方玩遊戲。你最終會寫出一個「後退」的方法,並可能將其存儲在Node上。 – jdi 2012-03-23 00:20:38
我同意,但它是迄今爲止我發現的最接近的東西lol – Jae 2012-03-23 01:04:04
是的,我的觀點是,我認爲它不會很好地將此作爲能夠實現鏈接列表的能力的證明,該列表也可以倒退: - ) – jdi 2012-03-23 01:40:11
- 1. 獲取指向對象的所有其他對象的列表
- 2. 查找具有某個屬性的關聯對象的所有對象
- 3. Python的 - 刪除對象指向另一個對象
- 4. 設置指向對象的指針,讓對象指向對方
- 5. 找對象以及所有子對象
- 6. 列出某個類的所有對象
- 7. LLDB:使用指向內存中對象的指針顯示所有對象
- 8. 指向對象的指針指向C++對象範圍之外
- 9. 找到所有圈子對象
- 10. Rails:找到父對象的所有關聯對象
- 11. 通過指向方向查找對象
- 12. ,對象和指向對象的指針有什麼區別?
- 13. 將對象加載到指向對象的指針陣列
- 14. 哪個對象指向「this」?
- 15. 如何指定另一個對象來指向單個對象?
- 16. C++矢量對象與指向對象的指針的向量
- 17. 找到並返回一個指向一個向量中的對象的指針
- 18. 如何查找lua中某個對象的所有屬性?
- 19. 指向現有對象的指針?
- 20. objc對象指向
- 21. 向某個方向移動對象
- 22. Foo類包含對象Bar,Foo表沒有指向Bar對象的指針,Bar對象有FK到Foo。
- 23. 如何問一個對象內的某個對象內的某個對象
- 24. 創建一個指向抽象對象的指針向量
- 25. 刪除所有指向java中的對象的指針
- 26. 讓幾個對象的屬性指向同一個對象
- 27. 查找所有沒有關聯has_many對象的對象
- 28. 向量含有矢量對象指針的最終指向同一對象
- 29. 指向const對象的指針自動轉換爲指向對象的指針
- 30. 查找對python中所有對象的引用
你不能,至少,Python環境之內。 – Amber 2012-03-22 00:42:24
你希望用這些信息來完成什麼? – 2012-03-22 00:43:25
http://stackoverflow.com/questions/1396668/python-get-object-by-id – John 2012-03-22 00:43:42