《Python面向对象编程指南》——2.10 总结

本节书摘来自异步社区《Python面向对象编程指南》一书中的第2章,第2.10节,作者[美]Steven F. Lott, 张心韬 兰亮 译,更多章节内容可以访问云栖社区“异步社区”公众号查看。

2.10 总结

我们已经介绍了许多基本的特殊方法,它们是我们在设计任何类时的基本特性。这些方法已经包含在每个类中,只是它们的默认行为不一定能满足我们的需求。

我们几乎总是需要重载__repr__()、__str__()、和__format__()。这些方法的默认实现不是非常有用。

我们几乎不需要重载__bool__()方法,除非我们想自定义集合。这是第6章“创建容器和集合”的主题。

我们常常需要重载比较运算符和__hash__()方法。默认的实现只适合于比较简单不可变对象,但是不适用于比较可变对象。我们不一定要重写所有的比较运算符,在第8章“装饰器和mixin——横切方面”中,我们会详细介绍functools. total_ordering修饰符。

另外两个较为特殊的方法__new__()和__del__()有更特殊的用途。大多数情况下,使用__new__()来扩展不可变类型。

基本的特殊方法和__init__()方法几乎会出现在我们定义的所有类中。其他的特殊方法则有更特殊的用途,它们分为6个不同的类别。

  • 属性访问:这些特殊方法实现的是表达式中object.attribute的部分,它通常用在一个赋值语句的左操作数以及del语句中。
  • 可调用对象:一个实现了将函数作为参数的特殊方法,很像内置的len()函数。
  • 集合:这些特殊方法实现了集合的很多特性,包括sequence[index]、mapping[index]和set | set。
  • 数字:这些特殊方法提供了算术运算符和比较运算符。我们可以用这些方法扩展Python支持的数值类型。
  • 上下文:有两个特殊方法被我们用来实现可以和with语句一起使用的上下文管理器。
  • 迭代器:有一些特殊方法定义了一个迭代器。没有必要一定要使用这些方法,因为生成器函数很好地实现了这种特性。但是,我们可以了解如何实现自定义的迭代器。
上一篇:ImageView的scaletype属性


下一篇:Windows 安装 Go语言开发环境