python自定义类与任何其他内置对象(如list)有何不同?

python自定义类与任何其他内置对象(如list)有何不同?,python,class,python-2.7,Python,Class,Python 2.7,我不确定我的问题标题是否正确,但: 我的问题是: 当我创建了一个名为classA的新类,并对另一个名为classB的名称进行了deepcopy和平等和身份测试时: 这是我的第一个片段:使用type >>> import copy >>> classA = type('X', (object,), {}) >>> classB = copy.deepcopy(classA) >>> classB is classA True

我不确定我的问题标题是否正确,但:

我的问题是:

当我创建了一个名为classA的新类,并对另一个名为classB的名称进行了deepcopy平等和身份测试时:

这是我的第一个片段:使用
type

>>> import copy
>>> classA = type('X', (object,), {})
>>> classB = copy.deepcopy(classA)
>>> classB is classA
True
>>> classB == classA
True
>>>
第二段:使用关键字“class”创建类的测试:

>>> class X(object): pass
...
>>> import copy
>>> Y = copy.deepcopy(X)
>>> Y is X
True
>>> Y == X
True
>>>
第三段:当我对列表对象进行相同的测试时:

>>> import copy
>>> objA = list()
>>> objB = copy.deepcopy(objA)
>>> objB == objA
True
>>> objB is objA
False
>>>
为什么前两个和后两个不同?有人能给我解释一下吗?

这是行为:

此模块不复制诸如模块、方法、堆栈跟踪、堆栈帧、文件、套接字、窗口、数组或任何类似类型的类型。它通过原封不动地返回原始对象来“复制”函数和类(浅层和深层);这与pickle模块处理这些数据的方式兼容

至于为什么这样做,大概是因为人们不太需要有多个相同但不同的类