其他核心类型

您所在的位置:网站首页 Python中的continue 其他核心类型

其他核心类型

#其他核心类型| 来源: 网络整理| 查看: 265

后面会更多谈论所有的Python对象类型,但这里有一个类型值得特殊对待。type 对象(被内置函数type返回)是一个给出另一个对象的类型的对象;因为在3系列中类型已经完全和类(将在第六部分的“新样式”类的上下文中探索)融合,所以它的结果稍有不同。假设L仍是前一节中的列表:

# 在 Python 2系列中: >>> type(L) # 类型: L的类型是列表类型对象 >>> type(type(L)) # 甚至类型也是对象 # 在 Python 3系列中: >>> type(L) # 3系列: 类型是类,反之亦然 >>> type(type(L)) # 更多立即关于类的类型,请参见第32章

除了允许交互式地探索对象,type对象在其最实用的应用程序中还允许代码检查它处理的对象类型。事实上,在Python脚本中至少有三种这么做的方式:

>>> if type(L) == type([]): # 类型测试(如果必须)... print('yes') yes >>> if type(L) == list: # 使用类型名称 print('yes') yes >>> if isinstance(L, list): # 面向对象的测试 print('yes') yes

现在已展示了完成类型测试的所有方法,然而,必须告诉你:在Python编程中,这么做几乎总是错的(而且通常是一个前C程序员刚开始使用Python的标志)。这原因只有在本书后面,开始编写更大的代码单元如函数时,才会变得完全清楚,但它(可能)是核心的Python概念。检查代码中的特定类型实际上破坏了代码的灵活性——因为将它限制到了一种类型上。没有那些测试,代码可能可以在所有类型上工作。

这和之前提到的多态性概念有关,且它源于Python缺乏类型声明。将看到:在Python中,是对对象接口(支持的操作)而非对类型进行编码。也就是说,关心的是对象做什么,而不是它是什么。不关心特定的类型意味着代码对许多类型都自动可用——有兼容接口的对象不管具体是什么类型都可以工作。虽然支持类型检查(且甚至在一些罕见案例中是必须的),但将发现它通常不是“Python式的”思考方式。事实上,将会发现多态性才可能是用好Python的关键思想。

本文章首发在 LearnKu.com 网站上。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3