我在课堂上定义字典(让我们称之为Thingy)。有时我需要使用其他Thingy实例作为thing1字典中的键。但是,如果我尝试将thing2作为值1(例如)添加到thing1的字典中,那么thing2:1也会出现在thing2的字典中!
请确认您是否可以复制(python 2.7.6):
# class definition
class Thingy:
def __init__(self, d={}):
self.dict = d
# Test code
thing1 = Thingy()
thing2 = Thingy()
thing1.dict[thing2] = 1
print('Thing1.dict is {}'.format(thing1.dict))
print('Thing2.dict is {}'.format(thing2.dict))
给了我
Thing1.dict is {<__main__.Thingy instance at 0x7f79fdeed998>: 1}
Thing2.dict is {<__main__.Thingy instance at 0x7f79fdeed998>: 1}
即使我从未改变过Thing2.dict!
答案 0 :(得分:1)
绝不使用可变对象作为默认参数:
class Thingy:
def __init__(self, d={}):