Python中的类与类型

时间:2016-03-12 14:36:44

标签: python python-3.x

我最近刚开始自学如何编码。我目前正在阅读用于python 3的 Think Python 2 ,当它教授type()函数时,它会提供输出type(2)的示例<class 'int'>。然后它声明“在类别意义上使用'类'一词;类型是一类价值。”

令我困惑的部分是type()函数输出类而不是类型。另外,我不确定类型和类之间的区别;是“值”类型的字符串,浮点和整数类,还是它们是相同的东西?

我已经查了一下,但找不到我的具体问题的答案,或者只是简单易懂的理解。

2 个答案:

答案 0 :(得分:14)

曾几何时,Python同时拥有类型。类型是C中定义的内置对象;类是使用class语句时构建的。这两个人的名字不同,因为你不能混合这些;类无法扩展类型。

这种差异是人为的,是语言实施的限制。 Starting with Python 2.2,Python的开发人员慢慢地朝着统一这两个概念的方向发展,但差别在于Python 3中。内置类型现在也被标记为类,你可以随意扩展它们。

你的书试图解释Python中不存在的差异。即使在Python 2中,差异仅在于名称,因为type(2)显示“类型”这个词仍在那里使用:

>>> type(2)
<type 'int'>

但你可以像任何其他类一样继承int

(Python 2仍然有旧式类,那些不从object继承的类;这些是统一之前旧系统的残余。)

答案 1 :(得分:2)

python层次结构是Type(Metaclass) - &gt;类 - &gt;实例。 将函数type()想象为上升一级。

如果在type()(任何整数)的实例上使用函数int,如此:type(123),您将收到实例的类,在本例中为{{ 1}}。如果您在课程int上使用type(),您将收到int这是int的元类。

请记住元类是python的高级技术细节,您最初不需要了解它们。