python学习手册(第4版) 第二十九章 运算符重载
1.再次重温程序结构
程序由模块组成,模块中包含了语句块,语句块中包含了表达式,表达式创建并处理对象。
2.运算符重载
在类方法中拦截内置的操作。
(1)运算符重载让类拦截常规的python运算
(2)类可重载python所有表达式运算符
(3)类也可重载打印、函数调用、属性点号运算等内置运算
(4)重载使类实例的行为像内置类型
(5)重载是通过特殊名称的类方法来实现的(双下划线开始和结束)
3.构造函数是最常见的运算符重载
4.常见的运算符重载方法
4.简单了解常用运算符重载方法
重点说一下__new__方法,在实现类的单例模式时用到了它
比如__add__方法,对应了+运算符,当类的实例执行+运算时,不是使用内置的+运算,而是类中重新定义的__add__方法
(运算符重载方法可以被继承)
(继承自python3.0隐含了object类)
5.__next__方法实现迭代运算符重载
>>> class Squares:
... def __init__(self,start,stop):
... self.value = start - 1
... self.stop = stop
... def __iter__(self):
... return self
... def __next__(self): #重载了__next__方法
... if self.value == self.stop:
... raise StopIteration
... self.value += 1
... return self.value ** 2
...
>>> for i in Squares(1,5):
... print(i,end=' ')
...
1 4 9 16 25 >>>
6.__del__析构函数
属于__init__构造函数的对立面,内存中新增类的对象时自动调用__init__,当内存释放类的对象时自动调用__del__。