我最近才开始自学如何编码。我目前正在阅读 Think Python 2 for python 3 ,当它介绍
type()
函数时,它给出了输出 type(2)
的示例 <class 'int'>
。然后它指出“‘类’这个词是在类别的意义上使用的;类型是值的类别。”
令我困惑的部分是
type()
函数输出类而不是类型。另外,我不确定类型和类之间的区别;是“值”类型的字符串、浮点和整数类,还是相同的东西?
曾几何时,Python 同时拥有类型和类。类型是用 C 语言定义的内置对象;类是您使用
class
语句时构建的内容。两者的名称不同,因为你不能将它们混为一谈。类无法扩展类型。
这种差异是人为的,是语言实现的限制。 从Python 2.2开始,Python的开发者慢慢地朝着统一这两个概念的方向发展,在Python 3中差异几乎消失了。内置类型现在也被标记为类,你可以随意扩展它们。
你的书试图解释 Python 中不再存在的差异。即使在 Python 2 中,差异也仅存在于名称中,因为
type(2)
显示此处仍然使用“类型”一词:
>>> type(2)
<type 'int'>
但是您可以像任何其他类一样对
int
进行子类化。
(Python 2 仍然有旧式类,那些不继承自
object
的类;这些是统一之前旧系统的残余。)
Python的层次结构是类型(元类)->类->实例。 将函数
type()
视为上升一级。
如果您在
type()
(任何整数)的实例上使用函数 int
,如下所示: type(123)
您将收到实例的类,在本例中为 int
。如果您在类 type()
上使用 int
,您将收到 type type
,它是 int 的元类。
请记住,元类是 Python 的高级技术细节,您不需要首先了解它们。
如果您刚刚开始学习编程,请记住术语“类型”和“类”的含义非常多(在不同的上下文中有时用于不同的事物,有时用于同义词)。粗略地说,你有...
__init__
)。