特殊方法与运算符重载

全屏查看

1 Python 特殊方法基础 #

mindmap
    id1[Python 特殊方法基础]
        id1-1[特殊方法概述]
        id1-2[特殊方法的概念与命名约定]
        id1-3[双下划线方法的作用机制]
        id1-4[特殊方法与内置函数的关系]
        id1-5[特殊方法的调用方式]
        id1-6[对象生命周期方法]
        id1-7[`__new__` 方法:对象创建]
        id1-8[`__init__` 方法:对象初始化]
        id1-9[`__del__` 方法:对象销毁]
        id1-10[构造与析构的执行顺序]
        id1-11[对象表示方法]
        id1-12[`__str__` 方法:用户友好字符串表示]
        id1-13[`__repr__` 方法:开发者友好字符串表示]
        id1-14[`__format__` 方法:格式化输出]
        id1-15[`__bytes__` 方法:字节表示]
特殊方法概述
特殊方法的概念与命名约定
双下划线方法的作用机制
特殊方法与内置函数的关系
特殊方法的调用方式
对象生命周期方法
`__new__` 方法:对象创建
`__init__` 方法:对象初始化
`__del__` 方法:对象销毁
构造与析构的执行顺序
对象表示方法
`__str__` 方法:用户友好字符串表示
`__repr__` 方法:开发者友好字符串表示
`__format__` 方法:格式化输出
`__bytes__` 方法:字节表示

2 比较运算符重载 #

基本比较运算符
`__eq__` 方法:等于运算符 ==
`__ne__` 方法:不等于运算符 !=
`__lt__` 方法:小于运算符 <
`__le__` 方法:小于等于运算符 <=
`__gt__` 方法:大于运算符 >
`__ge__` 方法:大于等于运算符 >=
比较运算的实现技巧
使用 `functools.total_ordering` 装饰器
比较运算的对称性处理
哈希一致性要求
比较运算的性能优化
哈希与相等性
`__hash__` 方法的作用
哈希值与相等性的关系
不可变对象的哈希实现
自定义类的哈希策略
mindmap
    id2[比较运算符重载]
        id2-1[基本比较运算符]
        id2-2[`__eq__` 方法:等于运算符 ==]
        id2-3[`__ne__` 方法:不等于运算符 !=]
        id2-4[`__lt__` 方法:小于运算符 <]
        id2-5[`__le__` 方法:小于等于运算符 <=]
        id2-6[`__gt__` 方法:大于运算符 >]
        id2-7[`__ge__` 方法:大于等于运算符 >=]
        id2-8[比较运算的实现技巧]
        id2-9[使用 `functools.total_ordering` 装饰器]
        id2-10[比较运算的对称性处理]
        id2-11[哈希一致性要求]
        id2-12[比较运算的性能优化]
        id2-13[哈希与相等性]
        id2-14[`__hash__` 方法的作用]
        id2-15[哈希值与相等性的关系]
        id2-16[不可变对象的哈希实现]
        id2-17[自定义类的哈希策略]

3 算术运算符重载 #

mindmap
    id3[算术运算符重载]
        id3-1[基本算术运算符]
        id3-2[`__add__` 方法:加法运算符 +]
        id3-3[`__sub__` 方法:减法运算符 -]
        id3-4[`__mul__` 方法:乘法运算符 *]
        id3-5[`__truediv__` 方法:真除法运算符 /]
        id3-6[`__floordiv__` 方法:地板除运算符 //]
        id3-7[`__mod__` 方法:取模运算符 %]
        id3-8[进阶算术运算符]
        id3-9[`__pow__` 方法:幂运算符 **]
        id3-10[`__matmul__` 方法:矩阵乘法运算符 @]
        id3-11[`__divmod__` 方法:divmod函数支持]
        id3-12[`__abs__` 方法:绝对值函数支持]
        id3-13[反向算术运算]
        id3-14[`__radd__`、`__rsub__` 等反向方法]
        id3-15[交换律运算的实现]
        id3-16[类型兼容性处理]
        id3-17[反向运算的应用场景]
        id3-18[原地算术运算]
        id3-19[`__iadd__` 方法:原地加法 +=]
        id3-20[`__isub__` 方法:原地减法 -=]
        id3-21[`__imul__` 方法:原地乘法 *=]
        id3-22[原地运算与普通运算的区别]
基本算术运算符
`__add__` 方法:加法运算符 +
`__sub__` 方法:减法运算符 -
`__mul__` 方法:乘法运算符 *
`__truediv__` 方法:真除法运算符 /
`__floordiv__` 方法:地板除运算符 //
`__mod__` 方法:取模运算符 %
进阶算术运算符
`__pow__` 方法:幂运算符 **
`__matmul__` 方法:矩阵乘法运算符 @
`__divmod__` 方法:divmod函数支持
`__abs__` 方法:绝对值函数支持
反向算术运算
`__radd__`、`__rsub__` 等反向方法
交换律运算的实现
类型兼容性处理
反向运算的应用场景
原地算术运算
`__iadd__` 方法:原地加法 +=
`__isub__` 方法:原地减法 -=
`__imul__` 方法:原地乘法 *=
原地运算与普通运算的区别

4 位运算符重载 #

基本位运算符
`__and__` 方法:按位与运算符 &
`__or__` 方法:按位或运算符 |
`__xor__` 方法:按位异或运算符 ^
`__invert__` 方法:按位取反运算符 ~
位移运算符
`__lshift__` 方法:左移运算符 <<
`__rshift__` 方法:右移运算符 >>
位移运算的边界处理
大整数位移的实现
位运算的反向与原地版本
反向位运算方法
原地位运算方法
位运算的性能考虑
位运算在数据结构中的应用
mindmap
    id4[位运算符重载]
        id4-1[基本位运算符]
        id4-2[`__and__` 方法:按位与运算符 &]
        id4-3[`__or__` 方法:按位或运算符 |]
        id4-4[`__xor__` 方法:按位异或运算符 ^]
        id4-5[`__invert__` 方法:按位取反运算符 ~]
        id4-6[位移运算符]
        id4-7[`__lshift__` 方法:左移运算符 <<]
        id4-8[`__rshift__` 方法:右移运算符 >>]
        id4-9[位移运算的边界处理]
        id4-10[大整数位移的实现]
        id4-11[位运算的反向与原地版本]
        id4-12[反向位运算方法]
        id4-13[原地位运算方法]
        id4-14[位运算的性能考虑]
        id4-15[位运算在数据结构中的应用]

5 类型转换方法 #

mindmap
    id5[类型转换方法]
        id5-1[数值类型转换]
        id5-2[`__int__` 方法:转换为整数]
        id5-3[`__float__` 方法:转换为浮点数]
        id5-4[`__complex__` 方法:转换为复数]
        id5-5[`__bool__` 方法:布尔值转换]
        id5-6[容器类型转换]
        id5-7[`__str__` 与 `__repr__` 的深入应用]
        id5-8[`__bytes__` 方法的实现细节]
        id5-9[`__format__` 方法的格式化规范]
        id5-10[自定义格式化字符串]
        id5-11[索引与切片转换]
        id5-12[`__index__` 方法:索引转换]
        id5-13[切片对象的处理]
        id5-14[索引越界的处理策略]
        id5-15[负索引的支持]
数值类型转换
`__int__` 方法:转换为整数
`__float__` 方法:转换为浮点数
`__complex__` 方法:转换为复数
`__bool__` 方法:布尔值转换
容器类型转换
`__str__` 与 `__repr__` 的深入应用
`__bytes__` 方法的实现细节
`__format__` 方法的格式化规范
自定义格式化字符串
索引与切片转换
`__index__` 方法:索引转换
切片对象的处理
索引越界的处理策略
负索引的支持

6 容器类型方法 #

序列类型方法
`__len__` 方法:长度获取
`__getitem__` 方法:元素访问
`__setitem__` 方法:元素赋值
`__delitem__` 方法:元素删除
迭代器协议
`__iter__` 方法:迭代器获取
`__next__` 方法:下一个元素
迭代器状态管理
可迭代对象与迭代器的区别
容器操作
`__contains__` 方法:成员测试 in
`__reversed__` 方法:反向迭代
容器性能优化技巧
自定义容器的设计模式
mindmap
    id6[容器类型方法]
        id6-1[序列类型方法]
        id6-2[`__len__` 方法:长度获取]
        id6-3[`__getitem__` 方法:元素访问]
        id6-4[`__setitem__` 方法:元素赋值]
        id6-5[`__delitem__` 方法:元素删除]
        id6-6[迭代器协议]
        id6-7[`__iter__` 方法:迭代器获取]
        id6-8[`__next__` 方法:下一个元素]
        id6-9[迭代器状态管理]
        id6-10[可迭代对象与迭代器的区别]
        id6-11[容器操作]
        id6-12[`__contains__` 方法:成员测试 in]
        id6-13[`__reversed__` 方法:反向迭代]
        id6-14[容器性能优化技巧]
        id6-15[自定义容器的设计模式]

7 属性访问方法 #

mindmap
    id7[属性访问方法]
        id7-1[基本属性访问]
        id7-2[`__getattr__` 方法:属性获取]
        id7-3[`__getattribute__` 方法:属性访问拦截]
        id7-4[`__setattr__` 方法:属性设置]
        id7-5[`__delattr__` 方法:属性删除]
        id7-6[描述符协议]
        id7-7[`__get__` 方法:描述符获取]
        id7-8[`__set__` 方法:描述符设置]
        id7-9[`__delete__` 方法:描述符删除]
        id7-10[描述符的应用场景]
        id7-11[属性管理高级技巧]
        id7-12[属性访问的性能考虑]
        id7-13[动态属性创建]
        id7-14[属性访问的权限控制]
        id7-15[属性访问的日志记录]
基本属性访问
`__getattr__` 方法:属性获取
`__getattribute__` 方法:属性访问拦截
`__setattr__` 方法:属性设置
`__delattr__` 方法:属性删除
描述符协议
`__get__` 方法:描述符获取
`__set__` 方法:描述符设置
`__delete__` 方法:描述符删除
描述符的应用场景
属性管理高级技巧
属性访问的性能考虑
动态属性创建
属性访问的权限控制
属性访问的日志记录

8 调用与上下文管理 #

可调用对象
`__call__` 方法:对象调用
函数对象的模拟
可调用对象的应用
装饰器类的实现
上下文管理器
`__enter__` 方法:进入上下文
`__exit__` 方法:退出上下文
异常处理机制
资源管理的最佳实践
异步上下文管理器
`__aenter__` 方法:异步进入
`__aexit__` 方法:异步退出
异步资源管理
协程中的上下文管理
mindmap
    id8[调用与上下文管理]
        id8-1[可调用对象]
        id8-2[`__call__` 方法:对象调用]
        id8-3[函数对象的模拟]
        id8-4[可调用对象的应用]
        id8-5[装饰器类的实现]
        id8-6[上下文管理器]
        id8-7[`__enter__` 方法:进入上下文]
        id8-8[`__exit__` 方法:退出上下文]
        id8-9[异常处理机制]
        id8-10[资源管理的最佳实践]
        id8-11[异步上下文管理器]
        id8-12[`__aenter__` 方法:异步进入]
        id8-13[`__aexit__` 方法:异步退出]
        id8-14[异步资源管理]
        id8-15[协程中的上下文管理]

9 高级特殊方法 #

mindmap
    id9[高级特殊方法]
        id9-1[类创建与元类方法]
        id9-2[`__init_subclass__` 方法:子类初始化]
        id9-3[`__class_getitem__` 方法:类泛型支持]
        id9-4[`__mro_entries__` 方法:MRO条目处理]
        id9-5[元类编程中的特殊方法]
        id9-6[协程与异步方法]
        id9-7[`__await__` 方法:可等待对象]
        id9-8[`__aiter__` 方法:异步迭代器]
        id9-9[`__anext__` 方法:异步下一个]
        id9-10[异步编程的特殊方法支持]
        id9-11[数据模型方法]
        id9-12[`__getnewargs_ex__` 方法:pickle支持]
        id9-13[`__reduce__` 与 `__reduce_ex__` 方法]
        id9-14[`__sizeof__` 方法:对象大小]
        id9-15[对象序列化与反序列化]
类创建与元类方法
`__init_subclass__` 方法:子类初始化
`__class_getitem__` 方法:类泛型支持
`__mro_entries__` 方法:MRO条目处理
元类编程中的特殊方法
协程与异步方法
`__await__` 方法:可等待对象
`__aiter__` 方法:异步迭代器
`__anext__` 方法:异步下一个
异步编程的特殊方法支持
数据模型方法
`__getnewargs_ex__` 方法:pickle支持
`__reduce__` 与 `__reduce_ex__` 方法
`__sizeof__` 方法:对象大小
对象序列化与反序列化

10 实际应用与最佳实践 #

设计模式中的特殊方法
策略模式与运算符重载
装饰器模式与 `__call__` 方法
迭代器模式与容器方法
状态模式与属性访问
性能优化技巧
特殊方法的性能影响
惰性计算与属性访问
缓存机制与哈希方法
内存管理与对象池
测试与调试
特殊方法的单元测试
运算符重载的边界测试
调试技巧与工具
常见错误与解决方案
最佳实践指南
运算符重载的设计原则
特殊方法的命名规范
代码可读性与维护性
向后兼容性考虑
mindmap
    id10[实际应用与最佳实践]
        id10-1[设计模式中的特殊方法]
        id10-2[策略模式与运算符重载]
        id10-3[装饰器模式与 `__call__` 方法]
        id10-4[迭代器模式与容器方法]
        id10-5[状态模式与属性访问]
        id10-6[性能优化技巧]
        id10-7[特殊方法的性能影响]
        id10-8[惰性计算与属性访问]
        id10-9[缓存机制与哈希方法]
        id10-10[内存管理与对象池]
        id10-11[测试与调试]
        id10-12[特殊方法的单元测试]
        id10-13[运算符重载的边界测试]
        id10-14[调试技巧与工具]
        id10-15[常见错误与解决方案]
        id10-16[最佳实践指南]
        id10-17[运算符重载的设计原则]
        id10-18[特殊方法的命名规范]
        id10-19[代码可读性与维护性]
        id10-20[向后兼容性考虑]