Python中的对象创建和垃圾收集

时间:2016-12-15 06:29:17

标签: python python-3.x oop object garbage-collection

请仔细阅读以下代码并解释我如何实现我共享代码的输出:

class Customer:
    pass

c1=Customer()
print(c1)
print(Customer())
print(Customer(),Customer())
print(c1,Customer())
print(Customer())
print(Customer())

输出:

<__main__.Customer object at 0x0172FA90>
<__main__.Customer object at 0x0172FAB0>
<__main__.Customer object at 0x0172FAB0> <__main__.Customer object at  0x0172FB10>
<__main__.Customer object at 0x0172FA90> <__main__.Customer object at  0x0172FAB0>
<__main__.Customer object at 0x0172FAB0>
<__main__.Customer object at 0x0172FAB0>

1 个答案:

答案 0 :(得分:1)

对象的分配恰好使用相同的内存位置,这不是允许的。

由于您创建的实例由于没有现有的引用而立即被收集,因此Python有可能重新使用相同的内存,导致其中一些具有相同的地址,请参阅{{3 }}:

  

返回对象的“标识”。这是一个整数,在该生命周期内保证该对象是唯一且恒定的。 两个生命周期不重叠的对象可能具有相同的id()

(强调我的)