2

実際のオブジェクトと python.Googled でのその参照について少し混乱していますが、必要なものが得られませんでした。

オブジェクトの作成もそのオブジェクトへの参照を返しますか? なぜ私がこれを求めているのかというと、.デリミタ付きの実際のオブジェクトを使用してそのメソッドを呼び出すことができるからです。通常、オブジェクトの参照を使用してメソッドを呼び出します。

l = [2,4,1,3]# 'l' は実際のオブジェクトへの参照です。

RHS 部分はオブジェクトを作成し、 LHS に割り当てられるオブジェクトへの参照を返しますか?

と の両方を使用してリストを並べ替えることができるからlist.sort()です[2,4,1,3].sort()。実際のオブジェクトですか[2,4,1,3]、それともオブジェクトの作成とともに参照を生成しますか?

クラスの場合も同様です。

obj=SomeClass()#obj は SomeClass() によって作成されたオブジェクトへの参照です。

SomeClass()オブジェクトの作成とともに参照を返しますか?

との両方を使用obj.method1()SomeClass().method1てメソッドを呼び出すことができるためです。

4

1 に答える 1

3

The Python Language Reference "Data Model"を読むことをお勧めします。

Python では、オブジェクトを作成すると、ヒープに割り当てられます。オブジェクトを何らかの変数に割り当てると、実際にタグ付けされます。1 つのオブジェクトに複数のタグが含まれる場合があります。オブジェクトがすべてのタグを失うと、Python ガベージ コレクターによって破棄される可能性があります。したがって、あなたの質問に対する答え - [1,2,3]参照を返さず、単に新しいオブジェクトを作成します。

編集:

実はその間、

[1, 2, 3].sort()

[1, 2, 3] リストへの参照があり、VM のスタックに残ります。しかし、前述のように、それは返されません。しかし、その間:

l = [1, 2, 3]

この参照は、VM のスタックから l にコピーされます。

于 2012-08-30T09:21:45.703 に答える