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がHeapのみを使用することを知っています)?それらはいつ、ランタイムかランタイムの前に保存されますか?例えば
、私はこのクラスを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についての説明に関して、本の推奨事項はありますか? –