type(a_subclass) return 是 Python 中的单例吗?

Does type(a_subclass) return a singleton in Python?

我是 Python 的新手,我需要比较对 type(a_subclass) 的两个响应是否相等(,我需要确定父 class 的两个子 class 完全相同。)我可以安全地假设 type returns 单例并使用 is 运算符吗?或者 == 是必要的吗?还有什么我应该担心的,比如比较包和模块名称吗?

请注意 ,其答案充其量是令人困惑的。我正在寻找 'yes' 或 'no.'

我不会将“单例”一词用于类型对象(在这个问题中或几乎重复的问题中):单例是其类型的唯一对象,并且type(1)type(None) 是两个相同类型的对象(即 type)。表达这个问题的正确方式似乎是“两个 type 对象 可以表示相同的类型吗?”。

如果是这样,他们比较 == 可能是合理的,如问题中所建议的。 (相反,可以想象 不同的 类型比较 == 基于它们的大小或名称,但我们可以忽略这种无用的可能性。)但是,类型是 mutable in Python,最简单的例子是你可以将静态变量赋值为 Class.var=2。显然,必须可以用 type(Class()).var 读取该值,这意味着它们是 相同的 对象。虽然 可能 通过代理对象实现这种语法,但假设没有引入这种不必要的复杂性是正确的(特别是因为它会涉及额外的内存分配和引用计数开销) .

从这个角度来看,答案几乎是同义反复:Python类型是由它们的代表对象的身份定义的,所以同一个对象当然必须无处不在。