周报1

特殊方法与运算符重载-1

l Python类有大量的特殊方法,其中比较常见的是构造
函数和析构函数,除此之外,Python还支持大量的特
殊方法,运算符重载就是通过重写特殊方法实现的
l Python中类的构造函数是__init__(),一般用来为数据成员设
置初值或进行其他必要的初始化工作,在创建对象时被自动
调用和执行。如果用户没有设计构造函数,Python将提供一
个默认的构造函数用来进行必要的初始化工作
l Python中类的析构函数是__del__(),一般用来释放对象占用
的资源,在Python删除对象和收回对象空间时被自动调用和
执行。如果用户没有编写析构函数,Python将提供一个默认
的析构函数进行必要的清理工作
继承与多态
方法
功能说明
__new__()
类的静态方法,用于确定是否要创建对象
__init__()
构造方法,创建对象时自动调用
__del__()
析构方法,释放对象时自动调用
__add__()
+
__sub__()
-
__mul__()
*3
32
2
特殊方法与运算符重载-2
方法
功能说明
__truediv__()
/
__floordiv__()
//
__mod__()
%
__pow__()
**
__eq__(),__ne__(),__lt__(),
__le__(),__gt__(),__ge__()
==、 !=、<、 <=、>、 >=
__lshift__(),__rshift__()
<<、>>
__and__(),__or__(),
__invert__(),__xor__()
&、|、~、^
__iadd__()、__isub__()等
+=、-=,等复合赋值运算符
__pos__()
一元运算符+,正号
__neg__()
一元运算符-,负号
__contains__ ()
与成员测试运算符in对应
__radd__()、__rsub__
反射加法、反射减法,一般与普通加法和
减法具有相同的功能,但操作数的位置或
顺序相反,很多其他运算符也有与之对应
的反射运算符
继承与多态3
3
3
3
特殊方法与运算符重载-3
方法
功能说明
__abs__()
与内置函数abs()对应
__bool__()
与内置函数bool()对应,要求该方法返回True或False
__bytes__()
与内置函数bytes()对应
__complex__()
与内置函数complex()对应,要求该方法必须返回复数
__dir__()
与内置函数dir()对应
__divmod__()
与内置函数divmod()对应
__float__()
与内置函数float()对应,要求该该方法必须返回实数
__hash__()
与内置函数hash()对应
__int__()
与内置函数int()对应,要求该方法必须返回整数
__len__()
与内置函数len()对应
__next__()
与内置函数next()对应
__reduce__()
提供对reduce()函数的支持
__reversed__()
与内置函数reversed()对应
__round__()
对内置函数round()对应
__str__()
与内置函数str()对应,要求该方法必须返回str类型的
数据
__repr__()
打印、转换,要求该方法必须返回str类型的数据
继承与多态3
4
34
特殊方法与运算符重载-4
方法
功能说明
__getitem__()
按照索引获取值
__setitem__()
按照索引赋值
__delattr__()
删除对象的指定属性
__getattr__()
获取对象指定属性的值,对应成员访问运算符“.”
__getattribute__
()
获取对象指定属性的值,如果同时定义了该方法与
__getattr__(),那么__getattr__()将不会被调用,除
非在__getattribute__()中显式调用__getattr__()或者
抛出AttributeError异常
__setattr__()
设置对象指定属性的值
__base__
该类的基类
__class__
返回对象所属的类
__dict__
对象所包含的属性与值的字典
__subclasses__() 返回该类的所有子类
__call__()
包含该特殊方法的类的实例可以像函数一样调用
__get__()
定义了这三个特殊方法中任何一个的类称作描述符
descriptor),描述符对象一般作为其他类的属性来
使用,这三个方法分别在获取属性、修改属性值或删除
属性时被调用
__set__()
__delete__()
继承与多态3
5
3
5
自定义类示例
l 自定义队列结构,实现入队、出队操作,提供超时功
能【
04P35-1.py】
l 定义栈,实现基本的入栈、出栈操作【
04P35-2.py】
l 自定义集合类【
04P35-3.py】
l 自定义数字数组类,支持数组与数字之间的四则运算,
数组之间的加法运算、内积运算和大小比较,数组元
素访问和修改,以及成员测试等功能【
04P35-4.py】
l 使用Python模拟双链表结构【
04P35-5.py】
l 自定义常量类【
04P35-6.py】
l 自定义不允许修改值的字典类【
04P35-7.py】
posted @ 2022-03-06 17:58  我的未来姓栗山  阅读(15)  评论(0编辑  收藏  举报