创建N次类的实例而不将其分配给变量

CPython 3.8

class Class: pass

s = set(
    id(Class())
    for _ in range(5)
)
len(s) == 1  # True

似乎这是一种解释器魔术,它肯定与垃圾收集有关。它是特定于 CPython 的,不受任何标准行为的保证吗?

回答

给出两个不同的对象xy(即,x is y是假的),id(x) != id(y)如果寿命时间时,才能保证xy重叠。如果它们不重叠(就像这里的情况),则两者都不是id(x) == id(y)id(x) != id(y)不需要为真。一个或另一个基于实现,但都或多或少比另一个“正确”。


以上是创建N次类的实例而不将其分配给变量的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>