第2章 与Python无缝集成——基本特殊方法

Python中有一些特殊方法,它们允许我们的类和Python更好地集成。在标准库参考(Standard Library Reference)中,它们被称为基本特殊方法,是与Python的其他特性无缝集成的基础。

例如,我们用字符串来表示一个对象的值。Object基类包含了__repr__()__str__()的默认实现,它们提供了一个对象的字符串描述。遗憾的是,这些默认的实现不够详细。我们几乎总会想重写它们中的一个或两个。我们还会介绍__format__(),它更加复杂一些,但是和上面两个方法的作用相同。

我们还会介绍其他的转换方法,尤其是__hash__()__bool__()__bytes__()。这些方法可以把一个对象转换成一个数字、一个布尔值或者一串字节。例如,当我们实现了__bool__(),我们就可以像下面这样在if语句中使用我们的对象:if someobject:

接下来,我们会介绍实现了比较运算符的几个特殊方法:__lt__()__le__()__eq__()__ne__()__gt__()__ge__()

当我们定义一个类时,几乎总是需要使用这些基本的特殊方法。

我们会在最后介绍__new__()__del__(),因为它们的使用更加复杂,而且相比于其他的特殊方法,我们并不会经常使用它们。

我们会详细地介绍如何用这些特殊方法来扩展一个简单类。我们需要了解从object继承而来的默认行为,这样,我们才能理解应该在什么时候使用重写,以及如何使用它。

对于一个对象,Python提供了两种字符串表示。它们和内建函数repr()str()print() ...

Get Python面向对象编程指南 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.