0

来自 Scott 的 Programming Language Pragmatics

对象生命周期通常对应于三种主要存储分配机制之一,用于管理对象的空间:

  1. 静态对象被赋予一个绝对地址,该地址在程序执行过程中被保留。

  2. 堆栈对象以后进先出的顺序分配和释放,通常与子程序调用和返回结合使用。

  3. 堆对象可以在任意时间分配和释放。它们需要更通用(也更昂贵)的存储管理算法。

C 编程语言有静态对象、栈对象和堆对象。

Python 有静态对象、栈对象和堆对象吗?

在另一篇文章中看到 CPython 在堆上分配所有对象。这是否意味着Python中的所有对象都是堆对象?

但是 Python 也有静态方法。Python中的静态方法是PLP书中的静态对象吗?

谢谢。

4

1 回答 1

4

Python 对象大多是堆对象——然而, CPython中有一些特殊的 PyObject 单例值在 C中是静态的;虽然这是一个实现细节。例如,通常的内置类型具有静态存储持续时间。我知道没有堆栈(Python)对象。

正如这里所理解的,静态存储持续时间与静态方法完全无关。

于 2017-09-15T22:27:54.677 回答