这一章写的是python的特殊方法(special method),又叫作魔术方法(magic method)。最常见的就是面向对象编程时的初始化方法__init__,这类方法的特点有:

  • 方法名首尾有两个下划线。
  • 所有特殊方法都是python内置的,使用时只需要在类里重写,最好不要自己定义新的特殊方法。
  • 特殊方法都与特殊操作绑定,不需要显式调用。如__init__与对象初始化绑定,__len__len()方法绑定,__add__+运算绑定。

  部分特殊方法如下,首先是与运算符无关的特殊方法:

然后是与运算符有关的特殊方法:

  __repr____str__都是用于定义对象的字符串表示形式。区别是前者用于在命令行直接输入一个对象时返回的字符串,后者是调用str()方法或print()时返回的字符串。如果只想实现其中一个特殊方法,就实现__repr__,因为没有__str__时解释器会自动调用__repr__

  __bool__用于定义一个对象的真值,如果对象需要参与条件判定的话,可以用bool()方法。