不,除了弄乱元类
__eq__方法之外,没有办法创建两个相等但不相同的类对象。
但是,这种行为不是类所独有的。对于没有
__eq__在其类中定义方法的任何对象,这都是默认行为。该行为是从继承的
object,后者是所有其他(新样式)类的基类。它仅对具有相等性其他语义的内置类型(例如,用于比较其内容的容器类型)和定义
__eq__自己的运算符的自定义类覆盖。
至于在不同的内存位置将两个不同的引用指向同一个类,由于Python的对象语义,这实际上是不可能的。对象的内存位置 是
其身份(至少在cpython中)。与相同内容的另外一类可以存在别的地方,但像你
A1和
A2例子,这将被看作是所有的Python逻辑不同的对象。



