我正在使用Python2.7解释器,发现下面的行为非常有趣
给定一个空类:
class A():
pass
我可以创建单独的实例,并且像预期的那样,它们有单独的ID:
a = A()
b = A()
id(a)
>>> XXXXXXXX44
id(b)
>>> XXXXXXXX16
但是当我随后调用id builtin时,如果没有一个变量来保存正在创建的实例,我会看到返回相同的id
id(A())
>>> XXXXXXXX88
id(A())
>>> XXXXXXXX88
更奇怪的是,当我在对id(A())
的调用之间混合另一个由变量持有的实例化时,行为会发生变化:
id(A())
>>> XXXXXXXX88
a = A()
>>> XXXXXXXX88
id(A())
>>> XXXXXXXX44
对这种行为有什么直觉吗
id(A())
创建一个A
实例,该实例在id
方法退出后立即被垃圾收集因此,对
id(A())
的新调用重用了引用如果将第一个引用存储在变量中,Python将无法重用该引用,因为它已被使用
相关问题 更多 >
编程相关推荐