2014-06-16 38 views
2

爲了說明這一點,這是一個假設性的問題,只是當我對原型代碼進行原型設計時突然出現在我腦海中的一個問題。動態創建類的適用範圍非常狹窄。動態創建的類與其他對象一樣被銷燬嗎?

在Python,我可以動態地定義由類,例如,一個嵌套DEF [1]內的定義:

def NewClass(doc): 
    class MyClass(object): 
    __doc__ = doc 
    return MyClass 

當類的實例成爲未使用的,會發生什麼?它的引用數是否爲零,是否像其他對象一樣被銷燬?或者它是專門處理一點,因爲它的課程?閱讀語言文檔,我沒有看到任何有關類對象破壞的內容。

更具體地說,如果我有代碼創建這些響應用戶請求,例如,所以有成千上萬或數百萬是通過一個進程的生命週期創建的,我是否需要擔心內存不足,因爲所有創建類?

[1]例如,type「功能」,以及可能各種元類事物或__new__技巧。

回答

2

是的,類也是對象,並且由相同的引用計數規則來管理。

如果您所做的所有返回值都是創建實例,那麼對這些實例的唯一引用是__class__屬性。如果沒有更多的特定類的實例,將不再被引用和刪除。