2016-05-19 5 views
5

のはmethodが呼び出された場合、私はクラスPythonでは、 'return self'はオブジェクトまたはポインタのコピーを返しますか?

class A: 
    def method(self): 
     return self 

があるとしましょう、返されることになるだろうA -objectへのポインタ、またはオブジェクトのコピーでありますか?

+0

オブジェクトへの参照を返します。ポインターの概念はPythonでは存在しません。 – DeepSpace

答えて

6

それは参照を返します:

>>> a = A() 
>>> id(a) 
40190600L 
>>> id(a.method()) 
40190600L 
>>> a is a.method() 
True 

あなたはそれをこのように考えることができます。引数として.method()関数にあなたが実際にパスself、それは同じselfを返します。

2

それはオブジェクトへの参照を返し、次の例を見て:(python docsから)

class A: 
    def method(self): 
     return self 

a = A() 
print id(a.method()) 
print id(a) 
> 36098936 
> 36098936 

b = a.method() 
print id(b) 
> 36098936 

idについて機能:

戻るオブジェクトの「同一性」。これは、オブジェクト の整数であり、このオブジェクトに対して一意で一定であることが保証されています(有効期間中に の整数)。

関連する問題