对象引用和 del 删除引用

  1. class Test:
  2. def __del__(self):
  3. print('删除一个对象', self)
  4. t1 = Test()
  5. t2 = t1
  6. print('t1', t1)
  7. del t1
  8. print('t2', t2)
  9. del t2

输出为(注意 __del__ 在引用计数为 0 时才打印):

  1. t1 <__main__.Test object at 0x0000020E92311220>
  2. t2 <__main__.Test object at 0x0000020E92311220>
  3. 删除一个对象 <__main__.Test object at 0x0000020E92311220>

为了简化内存管理,Python通过引用计数机制实现自动垃圾回收功能,Python中的每个对象都有一个引用计数,用来计数该对象在不同场所分别被引用了多少次。每当引用一次Python对象,相应的引用计数就增1,每当消毁一次Python对象,则相应的引用就减1,只有当引用计数为零时,才真正从内存中删除Python对象。