我在 Python 中玩元类,发现了一些非常奇怪的东西。我可以创建两个具有相同名称的类,但它们实际上是不同的对象。看:
>>> def create_class(**data):
... return type('MyClass', (object,), data)
...
>>> A = create_class(x=1, y=2)
>>> B = create_class(x=1, y=2)
>>> A
<class '__main__.MyClass'>
>>> B
<class '__main__.MyClass'>
>>> A == B
False
>>> a = A()
>>> b = B()
>>> type(a)
<class '__main__.MyClass'>
>>> type(b)
<class '__main__.MyClass'>
>>> type(a) == type(b)
False
我认为命名空间中的名称应该是唯一的。不是这样吗?