创建N次类的实例而不将其分配给变量
CPython 3.8
class Class: pass
s = set(
id(Class())
for _ in range(5)
)
len(s) == 1 # True
似乎这是一种解释器魔术,它肯定与垃圾收集有关。它是特定于 CPython 的,不受任何标准行为的保证吗?
回答
给出两个不同的对象x和y(即,x is y是假的),id(x) != id(y)如果寿命时间时,才能保证x和y重叠。如果它们不重叠(就像这里的情况),则两者都不是id(x) == id(y)或id(x) != id(y)不需要为真。一个或另一个将基于实现,但都或多或少比另一个“正确”。