我最近刚开始自学如何编码。我目前正在阅读用于python 3的 Think Python 2 ,当它教授type()
函数时,它会提供输出type(2)
的示例<class 'int'>
。然后它声明“在类别意义上使用'类'一词;类型是一类价值。”
令我困惑的部分是type()
函数输出类而不是类型。另外,我不确定类型和类之间的区别;是“值”类型的字符串,浮点和整数类,还是它们是相同的东西?
我已经查了一下,但找不到我的具体问题的答案,或者只是简单易懂的理解。
答案 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的高级技术细节,您最初不需要了解它们。