WEB开发网
开发学院软件开发Python 在 Python 中对协议使用 PEAK 阅读

在 Python 中对协议使用 PEAK

 2007-03-30 12:25:16 来源:WEB开发网   
核心提示: 什么是协议?抽象地说,协议只是对象同意遵循的一组行为,在 Python 中对协议使用 PEAK(2),强类型(Strongly-typed)编程语言 -- 包括 Python -- 都有一个基本类型的集合,每个基本类型都有一组得到保证的行为:Integer 知道如何去求它们自己的乘积;li

什么是协议?

抽象地说,协议只是对象同意遵循的一组行为。强类型(Strongly-typed)编程语言 -- 包括 Python -- 都有一个基本类型的集合,每个基本类型都有一组得到保证的行为:Integer 知道如何去求它们自己的乘积;list 知道如何去遍历它们的内容;dictionary 知道如何根据一个关键字找到相应的值;file 知道如何去读和写字节;诸如此类。您可以预期的内置类型的行为集合构成了它们实现的一个 协议。对协议进行系统化的对象被称为 接口(interface)。

对标准的类型而言,将实现的所有行为全部列出并不太困难(尽管不同的 Python 版本之间会稍有不同;或者,不同的编程语言之间当然会有差别)。但是,在边界 -- 对于属于自定义类的对象来说 -- 难以声明最终是什么构成了“类-dictionary”或“类-file”的行为。大部分情况下,只实现了比如内置的 dict 类型的方法的一个子集 -- 甚至是相当小的子集 -- 的自定义对象,就足够“类-dictionary”而可以满足当前的要求。不过,能显式地整理出一个对象要用到的函数、模块、类或者框架中需要能够做哪些事情,将是很吸引人的。那就是 PyProtocols 包所做到的(一部分)。

在具有静态类型声明的编程语言中,为了在新的上下文中使用数据,您通常需要将其自一个类型 强制类型转换(cast)或者 转换(convert)到另一个类型。在其他语言中,转换根据上下文的需要隐式地进行,这些被称为 强迫同型(coercions)。Python 中既有强制类型转换也有强迫同型,通常使用更多的是前者(“显式优于隐式”)。您可以将向一个浮点数加到一个整型数,结果得到一个更为通用的浮点数;但是如果您希望将字符串 "3.14" 转换为一个数字,那么您需要使用显式的构造函数 float("3.14") 。

上一页  1 2 3 4 5 6 7  下一页

Tags:Python 协议 使用

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接