我在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