Python:术语'类'与'类型'的区别
这是一个简单的问题:在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
”。在我看来,类型是一个更广泛的概念,我并不认为每个类都是一个独立的类型。
另外,当我使用元类(非常少见)时,我会说类型。