返回介绍

第31章 类的高级主题

发布于 2024-01-29 22:24:15 字数 1209 浏览 0 评论 0 收藏 0

本章将介绍一些与类相关的高级主题,作为第6部分和Python OOP讨论的结束:我们要研究如何建立内置类型的子类、新式类的变化和扩展、静态方法和类方法、函数装饰器等。

正像我们见到的那样,Python的OOP模型核心非常简单,而本章所介绍的是一些高级主题,而且是可选的,因此在Python应用程序设计中,不会经常遇到。不过,出于完整的考虑,我们还是简单看一看这些用于高级OOP工作的高级工具,来结束类的讨论。

就像往常一样,因为这是本书这一部分的最后一章,最后一节是介绍类与相关陷阱,还有这一部分的实验练习题。鼓励读者做一下练习题,来强化这里所学到的概念。也建议读者从事或研究较大的Python OOP项目,作为本书的补充。计算机领域一向如此,通过实践OOP的优点会越来越明显。

注意:本章集中了高级类主题,但是有些主题甚至太高级了,以至于本章无法很好地介绍。像特性、描述符、装饰器和元类这样的主题,在这里只是简单提及,并且将在本书最后一部分中更完整地介绍。对于这些主题的一些更完整的例子和扩展,请参阅后面的内容。

扩展内置类型

除了实现新的种类的对象以外,类偶尔也用于扩展Python的内置类型的功能,从而支持更另类的数据结构。例如,要为列表增加队列插入和删除方法,你可以写些类,包装(嵌入)列表对象,然后导出能够以特殊方式处理该列表的插入和删除的方法,就像第30章所学习过的委托技术。在Python 2.2时,你也可以使用继承把内置类型专有化。下面的两节会说明这两种技术。

通过嵌入扩展类型

还记得我们在第16章和第18章所写的那些集合函数吗?下面是它们以Python类的形式重生的样子。下面的例子(文件setwrapper.py)把一些集合函数变成方法,而且新增了一些基本运算符重载,实现了新的集合对象。对于多数类而言,这个类只是包装了Python列表,以及附加的集合运算。因为这是类,所以也支持多个实例和子类继承的定制。和我们前面的函数不同,这里使用类允许我们创建多个自包含的集合对象,带有预先设置的数据和行为,而不是手动把列表传入函数中:

要使用这个类,我们生成实例、调用方法,并且像往常一项运行定义的运算符:

重载索引运算让Set类的实例可以充当真正的列表。本章结尾的练习题中会碰见这个类并扩展它,在附录B中将进一步解释这些代码。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文