Python:术语'类'与'类型'的区别

43 投票
6 回答
13758 浏览
提问于 2025-04-16 06:57

这是一个简单的问题:在Python中,我什么时候应该使用“class”这个词,什么时候应该使用“type”这个词?

  • “class”是专门用来指用户自定义的类型,而“type”是用来指内置类型的吗?
  • 还是说现在因为一切都是类型……我是不是应该总是使用“type”,即使是用户自定义的类?
  • ……?

6 个回答

3

我用“类型”来指代一般情况,但当我说到属性时,我会用“类”。

不过其实你选择哪个都没关系。

{} 是一种 dict 类型。dict 类的 iteritems() 方法会返回一个迭代器。

15

是Python中的一种数据结构,可以用来作为创建该类实例的模板,比如你可以这样调用它:foo = Foo()

类型是一种类,可以用作其他类的模板,通过继承的方式来实现,比如:class Foo(Bar):

因为Python支持继承,所以所有类都可以作为其他类的模板,这意味着所有类实际上都是类型。

这尤其在“新式类”出现后更为明显,新式类是从object派生而来的,它们将用户定义的类和内置类型的类型层次统一起来。类一直都是类型,但现在它们和内置类型是同一种类型

虽然Python中的类是类型,但我觉得区分这两者还是有用的,所以在我看来这两个词并不是完全可以互换的。

额外定义: metaclass是一个类,它的实例也是类。在Python中,这些实例必须是从type类派生的,就像新式对象是从object派生的一样。

18

这其实是历史原因造成的:很久以前它们是不同的,但现在已经没有实际意义了。

补充:我在提到具体的实现时会用“class”,而在谈论高层次的数据结构、应用架构等时会更随意地用“type”。在我看来,类型是一个更广泛的概念,我并不认为每个类都是一个独立的类型。

另外,当我使用元类(非常少见)时,我会说类型。

撰写回答