![](/img/trans.png)
[英]Why do circular references prevent the destructors of objects that aren't on the loop?
[英]Disposing of objects with circular references
我的設計如下:
__main__
引用a
a
參考b
b
引用a
a
被創建,然后從__main__
處置 因此, a
和b
具有循環引用。 但是,在del a
我希望同時處置a
和b
。
我在許多地方看到使用上下文管理器的建議,特別是with
語句而不是__del__()
。 然而,所有我看到的例子with
在本地范圍的開始和結束(例如一定的方法的)
可以配合with
嗎?
有什么選擇?
我建議:
__del__
,但在明確的dispose
調用在正確的時間方法(S) 通常,當您知道自己有循環引用時,依靠自動__del__
處置不是一個好主意。 這很脆弱-即使您設法在某種情況下也可以使用它,但是對依賴項的微小更改也可能再次破壞它。
有什么選擇?
沒做什么。 在您創建像這樣的數百萬個循環引用之前,並且可以證明這一點(並且只有這一點)正在破壞您的程序之前,這實際上並不重要。
垃圾收集器應該可以解決這個問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.