我在Python中使用metaclasses,发现一些非常好奇的东西。我可以创建两个具有相同名称的类,但实际上它们是不同的对象。请参阅:在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
我认为名称空间内的名称应该是唯一的。那么情况不是这样吗?
你能解释一下名字空间中的名字应该是唯一的吗? – User
@使用名称空间中每个对象的名称(在本例中为'__main__')应该是唯一的。我认为'MyClass'是一个对象的名称,正如下面的答案所解释的那样,它不是。 – erickrf