Kann mir jemand sagen, wie verwaltet Python Interpreter oder PVM Speicher für den folgenden Code?Wie reserviert der Python-Interpreter Speicher für verschiedene Methoden?
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"
Wenn ich diese Klasse speichern und einige Codes laufen zu dieser Klasse verwandt, wie funktioniert PVM oder Python-Interpreter speichern Klassenvariablen, Klasse/statische Funktionen und Instanzvariablen? Ich war früher ein C++ Programmierer. Ich frage mich, wo diese "Dinge" gespeichert sind (ich weiß, dass Python nur Heap verwendet)? Wann werden sie gespeichert, RunTime oder vor RunTime?
Zum Beispiel führe ich diesen Code nach dieser Klasse Initing:
a = A()
a.getParams()
A.getPurpose()
A.printout()
Wie Python-Interpreter Speicher hinter diesem Code zuteilen?
CPython neigt dazu, nur den Heap zu verwenden (möglicherweise ausschließlich), aber dies ist keine Anforderung an die Sprachspezifikation. Du solltest es nicht annehmen (es sollte auch nicht wichtig sein). –
Da Sie aus C++ kommen und C lesen können, sollten Sie sich die Python-Quelle ansehen, um eine Vorstellung davon zu bekommen, wie die Dinge funktionieren. Zum Beispiel [der Bytecode-Interpreter] (https://github.com/python/cpython/blob/master/Python/ceval.c). – poke
@poke Danke. Dies ist ein guter Vorschlag. Ich werde den CPython-Code lesen, um mehr zu verstehen. Da CPython nicht sehr einfach zu verstehen ist, dauert es eine Weile, bis man den Kern erreicht hat. Haben Sie eine Buchempfehlung bezüglich CPython? –