目录

上一个主题

4.5. 八皇后问题‌

下一个主题

5. 调试



>>> from helper import info; info()
待更新

4.6. 小结

本章介绍的内容很多,下面来总结一下。

  • 新式类和旧式类:Python类的工作方式在不断变化。较新的Python 2版本有两种类,其中 旧式类正在快速退出舞台。新式类是Python 2.2引入的,提供了一些额外的功能,如支持 函数super和property,而旧式类不支持。要创建新式类,必须直接或间接地继承object 或设置 metaclass 。

  • 魔法方法:Python中有很多特殊方法,其名称以两个下划线开头和结尾。这些方法的功能 各不相同,但大都由Python在特定情况下自动调用。例如 init 是在对象创建后调用的。

  • 构造函数:很多面向对象语言中都有构造函数,对于你自己编写的每个类,都可能需要 为它实现一个构造函数。构造函数名为 init ,在对象创建后被自动调用。

  • 重写:类可重写其超类中定义的方法(以及其他任何属性),为此只需实现这些方法即可。 要调用被重写的版本,可直接通过超类调用未关联版本(旧式类),也可使用函数super 来调用(新式类)。

  • 序列和映射:要创建自定义的序列或映射,必须实现序列和映射协议指定的所有方法, 其中包括 getitem 和 setitem 等魔法方法。通过从list(或UserList)和dict(或 UserDict)派生,可减少很多工作量。

  • 迭代器:简单地说,迭代器是包含方法 next 的对象,可用于迭代一组值。没有更多的 值可供迭代时,方法 next 应引发StopIteration异常。可迭代对象包含方法 iter , 它返回一个像序列一样可用于for循环中的迭代器。通常,迭代器也是可迭代的,即包含 返回迭代器本身的方法 iter 。

  • 生成器:生成器的函数是包含关键字yield的函数,它在被调用时返回一个生成器,即一 种特殊的迭代器。要与活动的生成器交互,可使用方法send、throw和close。

  • 八皇后问题:八皇后问题是个著名的计算机科学问题,使用生成器可轻松地解决它。这 个问题要求在棋盘上放置8个皇后,并确保任何两个皇后都不能相互攻击。

本章介绍的新函数

函 数

描 述

iter(obj)

从可迭代对象创建一个迭代器

next(it)

让迭代器前进一步并返回下一个元素

property(fget, fset, fdel, doc)

返回一个特性;所有参数都是可选的

super(class, obj)

返回一个超类的关联实例

调用iter和super时,还可提供这里没有列出的其他参数,更详细的信息请参阅标准Python 文档。