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)

如果我self.list = []在第 3 行使用,该属性对于每个Thing. 如果我thing1 = Thing(my_list=[])在第 6 行使用,并且类似地在第 7 行使用,那么该属性对于每个Thing.

我在 Canopy 环境中运行 Python 2.7。

4

1 回答 1

3

你应该做这样的事情:

01 class Thing(object):
02     def __init__(self, my_list=None):
03         if my_list is None:
04           my_list = []
04         self.list = my_list 

有关关键字参数为何以这种方式表现的解释,请参阅这篇文章。

于 2013-10-03T22:24:06.627 回答