誰能告訴我Python解釋器或PVM如何管理以下代碼的內存?Python解釋器如何爲不同的方法分配內存?
class A(object):
class_purpose = "template"
def __init__(self):
self.a = 0.0
self.b = 0.0
def getParams(self):
return self.a, self.b
@classmethod
def getPurpose(cls):
return cls.class_purpose
@staticmethod
def printout():
print "This is class A"
當我保存這個類並運行與此相關的類的一些代碼,請問PVM或Python解釋器儲存類變量,類/靜態函數和實例變量?我曾經是一名C++程序員。我不知道這些「東西」存儲在哪裏(我知道Python只使用堆)?它們何時存儲,運行時間或運行時間之前?
例如,我INITING這個類後運行該代碼:
a = A()
a.getParams()
A.getPurpose()
A.printout()
如何Python解釋器分配的代碼背後的記憶?
CPython中往往只使用堆(也許完全),但是這不是一種語言規範要求。你不應該認爲它(也不重要)。 –
既然你來自C++並且可以讀取C,你可能需要查看Python源代碼以瞭解事情的工作原理。例如[字節碼解釋器](https://github.com/python/cpython/blob/master/Python/ceval.c)。 – poke
@poke謝謝。這是一個很好的建議。我將閱讀CPython代碼以瞭解更多信息。由於對CPython的理解不是很容易,因此需要一段時間才能獲得核心。你有關於CPython解釋的書籍建議嗎? –