簡體   English   中英

Python:有沒有辦法知道 class 的實例是否已分配給變量?

[英]Python: Is there a way of knowing whether an instance of a class has been assigned to a variable?

我正在編寫一個 Body2D class,在__add__()魔術方法下,我希望能夠知道 class 的實例是否實際分配給了一個變量,或者它是否只是為了添加而創建的。

例如,我將如何區分這兩者:

earth = Body2D()
venus = Body2D()
mars = earth + venus

...其中兩個第一個實例都綁定到一個變量,並且:

mars = Body2D() + Body2D()

我問的原因是因為我已經創建了一個 class 變量(一個列表),其中包含到目前為止創建的所有對象的 ID,我不想存儲尚未分配給變量的主體的 ID。

任何幫助將非常感激! 謝謝!

這是不可能的。 從您的 class 實例的角度來看,除了它們的引用計數沒有減少之外,在分配時沒有任何變化,因為當它們被加載到堆棧時引用計數會增加; 從堆棧彈出以存儲到變量將所有權轉移到變量,僅此而已。 這不是 C++,其中賦值涉及調用構造函數或賦值運算符來執行自定義代碼; 在一般情況下,臨時創建 object 和創建它以在命名變量中長期存儲之間存在實例可觀察差異。

我懷疑這里有一個 XY 問題,並且您真正的解決方案很可能最終會以某種方式使用weakref模塊來跟蹤哪些對象仍然被引用(您自己不持有會阻止對象被清理的引用)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM