- 在Python中可通过运算符重载来实现对象之间的运算,如字符串可以进行如下运算:
‘www.codingke’ + ‘.com’ - 字符串可以通过“+”运算符实现字符串连接操作,其本质是通过__add__方法重载了运算符“+”,因此上述代码还可以写成如下代码:
‘www.codingke’.add(’.com’) - Python把运算符与类的实例方法关联起来,每个运算符都对应一个方法。运算符重载就是让类的实例对象可以参与内置类型的运算。
表中列出了部分运算符重载方法。
算术运算符重载
- 定义一个复数类并对其进行算术运算符重载,如例所示。
比较运算符重载
- 定义一个复数类并对其进行比较运算符重载,如例所示。
- 在例中,定义一个MyComplex类,通过__eq__ ()方法重载==运算符。
字符串表示重载
-
当对象作为print()、str()函数的参数时,该对象会调用重载的__str__()方法,如例所示。
-
在例中,定义一个MyComplex类,通过__str__ ()方法重载字符串表示。
索引或切片重载
-
当对实例对象执行索引、分片或for迭代时,该对象会调用重载的__getitem__()方法,如例所示。
-
在例中,定义一个Data类,通过__getitem__()方法重载索引与分片。
-
此外,在通过赋值语句给索引或分片赋值时,实例对象将调用__setitem__()方法实现对序列对象的修改,如例所示。
-
在例中,定义一个Data类,通过__ setitem__()方法重载索引或分片赋值。
检查成员重载
-
当对实例对象执行检查成员时,该对象会调用重载的__contains__()方法,如例所示。
-
在例中,定义一个Data类,通过__contains__()方法重载检测成员运算符。