在Python中,给定一个类a,为什么对id(a())的后续调用返回相同的值?

2024-05-15 04:35:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用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

对这种行为有什么直觉吗


Tags: 实例idpass解释器class我会builtin直觉
1条回答
网友
1楼 · 发布于 2024-05-15 04:35:00

id(A())创建一个A实例,该实例在id方法退出后立即被垃圾收集

因此,对id(A())的新调用重用了引用

如果将第一个引用存储在变量中,Python将无法重用该引用,因为它已被使用

相关问题 更多 >

    热门问题