第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
继承而来的默认行为,这样,我们才能理解应该在什么时候使用重写,以及如何使用它。
2.1 __repr__()
和__str__()
方法
对于一个对象,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.