类型(a_subclass)在Python返回一个单例吗?



我是Python的新手,我需要比较对type(a_subclass)的两个响应是否相等(即。,我需要确保父类的两个子类完全相同。)我可以安全地假设type返回单例并使用is操作符吗?或者==是必需的?还有其他我应该担心的事情吗,比如比较包和模块名称?

请注意这里的类似问题,其答案充其量是令人困惑的。我在寻找一个"是"或"不是"。

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

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

从这个角度来看,答案几乎是同义反复:Python类型是由标识定义的。它们的代表对象,所以当然同样的对象必须在任何地方使用。

最新更新