这一章写的是python的特殊方法(special method),又叫作魔术方法(magic method)。最常见的就是面向对象编程时的初始化方法__init__
,这类方法的特点有:
- 方法名首尾有两个下划线。
- 所有特殊方法都是python内置的,使用时只需要在类里重写,最好不要自己定义新的特殊方法。
- 特殊方法都与特殊操作绑定,不需要显式调用。如
__init__
与对象初始化绑定,__len__
与len()
方法绑定,__add__
与+
运算绑定。
部分特殊方法如下,首先是与运算符无关的特殊方法:
然后是与运算符有关的特殊方法:
__repr__
和__str__
都是用于定义对象的字符串表示形式。区别是前者用于在命令行直接输入一个对象时返回的字符串,后者是调用str()
方法或print()
时返回的字符串。如果只想实现其中一个特殊方法,就实现__repr__
,因为没有__str__
时解释器会自动调用__repr__
。
__bool__
用于定义一个对象的真值,如果对象需要参与条件判定的话,可以用bool()
方法。