0

list次のコードでは、構築された各オブジェクトに固有の変数になると思いました。クラス変数として共有されるのはなぜですか?

01 class Thing(object):
02     def __init__(self, my_list=[]): 
03         self.list = my_list 
04         return 
05 
06 thing1=Thing()
07 thing2=Thing()
08 thing1.list.append(1)
09 print thing2.list     

id(thing1)は とは異なりid(things2)ますがid(thing1.list)、 と同じid(thing2.list)です。

3行目で使用するself.list = []と、属性はそれぞれに固有Thingです。6行目で使用thing1 = Thing(my_list=[])し、7行目でも同様に使用すると、属性はそれぞれに固有Thingです。

Canopy 環境で Python 2.7 を実行しています。

4

1 に答える 1