我正在玩pickle
庫,當我發現有時,不同的類實例在相同的內存位置。不同的類實例使用相同的內存位置
兩者的下面例子展示所述行爲:
class DemoClass:
def __init__(self):
self.name = 'demoName'
#example 1
for i in range(3):
print (DemoClass())
#example 2
[print(DemoClass()) for i in range(3)]
#Output for both example 1 and example 2
#Note that the memory locations are identical in the output
<__main__.DemoClass object at 0x00CEE610>
<__main__.DemoClass object at 0x00CEE610>
<__main__.DemoClass object at 0x00CEE610>
這是相當驚人的,以我的,所以也許你可以解釋爲什麼發生這種情況。
在節目作爲我希望它是如下的方式。
demo = [DemoClass() for i in range(3)]
for i in demo:
print (i)
#Output
<__main__.DemoClass object at 0x01F7E630>
<__main__.DemoClass object at 0x01F7ED30>
<__main__.DemoClass object at 0x01F7E670>