0

從編程語言語用,由ScottPython是否有靜態對象,堆棧對象和堆對象?

對象的壽命通常對應於三個主要 存儲分配機制之一,用於管理對象的空間:

  1. 靜態對象給出的絕對地址這在整個程序的執行過程中保留下來。

  2. 堆棧對象以後進先出順序分配和釋放,通常與子例程調用和返回一起使用。

  3. 堆對象可以在任意時間分配和釋放。他們需要更通用(並且昂貴)的存儲管理算法 算法。

C編程語言有靜態對象,堆棧對象和堆對象。

Python是否有靜態對象,堆棧對象和堆對象?我看到in another post CPython分配堆上的所有對象。這是否意味着Python中的所有對象都是堆對象?

但是Python也有靜態方法。 PLP書籍中的Python靜態對象是靜態方法嗎?

謝謝。

+0

靜態方法不是PLP書中的靜態對象,它們是禁用方法的綁定行爲的描述符對象(所以不傳入「self」)。 –

回答

2

Python對象大多堆對象 - 但是,也有一些特殊的PyObject單值CPython的是用C 靜態;儘管這是一個實現細節。例如,通常內置的類型具有靜態存儲持續時間。沒有我知道的堆棧(Python)對象。

靜態存儲時間,正如這裏所理解的,與靜態方法完全無關。

+0

謝謝。什麼是「CPython中靜態的特殊單例值」? CPython中是否有堆棧對象? – Tim

+0

@Tim我會想象這些小整數也是靜態單例。你可以用'id()'來獲得他們的內存地址。注意'id(255)'和'id(256)'彼此靠近,但是'id(257)'是完全不同的地方。再次,這是所有的實現細節,你不應該關心它們如何物理分配。 –

+0

@MarkRansom在C中,靜態,堆棧和堆對象不是實現細節,而是語言概念,這對於使用C語言編程很重要。我認爲Python中也是如此。 – Tim