在下面的代码中,我认为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。
答案 0 :(得分:2)
你应该这样做:
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
请参阅this post以获取关于为什么关键字参数以这种方式运行的解释。