私は Python でメタクラスをいじっていて、非常に興味深いものを見つけました。同じ名前の 2 つのクラスを作成できますが、それらは実際には異なるオブジェクトです。見る:
>>> 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
名前空間内の名前は一意であるべきだと思いました。では、そうではありませんか?