网站首页 > 基础教程 正文
Python中的特殊方法(也称为魔术方法或双下划线方法)是以双下划线开头并结尾的一种函数或属性。这种方法有一种机制,当对象参与特定的操作时(如实例化、调用、迭代、比较等),Python解释器就会自动的调用相应的功能来执行特定的操作。
特殊方法主要是为了Python解释器的调用,因此在代码中应该尽量使用内置函数来调用特殊方法,例如使用len(my_object)而不是my_object.__len__(),除非有大量的元编程时,可直接调用特殊方法。通过重载这些方法,可以实现自定义行为。
01:帮助查询
- 001:__annotations__ 返回对象的注解字典
- 002:__doc__ 返回对象的文档字符串
- 003:__slots__ 用于定义对象的__dict__
02:比较
- 004:__eq__(self,other) 等于运算
- 005:__ge__(self,other) 大于等于运算
- 006:__gt__(self,other) 大于运算
- 007:__le__(self,other) 小于等于运算
- 008:__lt__(self,other) 小于运算
03:迭代器与生成器
- 009:__next__(self) 返回迭代器的下一个项
- 010:__reversed__(self) 定制反转迭代器
- 011: __reversed__(self) 定制反转迭代器
04:对象相关
- 012. __new__(metacls,name,bases,namespace,**kwds) 元类中使用,创建类对象
- 013. __call__(self,...) 使对象可调用
- 014. __del__(self) 实例销毁时调用
- 015. __delattr__(self,name) 删除属性时调用
- 016. __dir__(self) 定制对象属性目录
- 017. __getattr__(self,name) 获取属性时调用
- 018. __getattribute__(self,name) 获取属性时调用,比__getattr__更早
- 019. __instancecheck__(self,instance) 用于isinstance()检查
- 020. __qualname__ 返回对象的限定名称(qualifiedname)
- 021. __setattr__(self,name,value) 设置属性时调用
- 022. __sizeof__(self) 返回对象的大小,用于 sys.getsizeof()
- 023. __subclasscheck__(self,subclass) 用于issubclass()检查
- 024. __init__(self,...) 初始化新创建的实例
05:赋值
- 025. __iadd__(self,other) 就地加法赋值运算
- 026. __imod__(self,other) 就地取模赋值运算
- 027. __imul__(self,other) 就地乘法赋值运算
- 028. __ipow__(self,other) 就地幂赋值运算
- 029. __isub__(self,other) 就地减法赋值运算
- 030. __itruediv__(self,other) 就地真除法赋值运算
06:描述符协议
- 031. __delete__(self,instance) 描述符协议,删除属性时调用
- 032. __get__(self,instance,owner) 描述符协议,访问属性时调用
- 033. __set__(self,instance,value) 描述符协议,设置属性时调用
07:容器相关
- 034. __contains__(self,item) 检查容器是否包含某个项
- 035. __delitem__(self,key) 删除容器中的项
- 036. __getitem__(self,key) 获取容器中的项
- 037. __len__(self) 返回容器长度
- 038. __setitem__(self,key,value) 设置容器中的项
08:上下文
- 039:__enter__(self) 进入上下文管理器时调用
- 040:__exit__(self,exc_type,exc_value,traceback) 退出上下文管理器时调用
09:数据转换
- 041:__complex__(self) 用于将对象转换为复数
- 042:__float__(self) 用于将对象转换为浮点数
- 043:__index__(self) 用于将对象转换为支持索引操作的整数
- 044:__int__(self) 用于将对象转换为整数
10:数学运算
- 045. __abs__(self) 绝对值运算
- 046. __add__(self,other) 加法运算
- 047. __bool__(self) 返回对象的布尔值
- 048. __Ceiling__(self) 向上取整对象
- 049. __divmod__ 除法和取模运算
- 050. __floor__(self) 向下取整对象
- 051. __floordiv__ 地板除法运算
- 052. __hash__(self) 返回对象的哈希值
- 053. __mod__(self,other) 取模运算
- 054. __mul__(self,other) 乘法运算
- 055. __ne__(self,other) 不等于运算
- 056. __neg__(self) 负号运算,等同于0-self
- 057. __pos__(self) 自反运算,等同于self+0
- 058. __pow__(self,other) 幂运算
- 059. __radd__ 反射加法运算
- 060. __rand__ 反射位与运算
- 061. __rfloordiv__ 反射地板除法运算
- 062. __rlshift__ 反射左移位运算
- 063. __rmod__ 反射取模运算
- 064. __rmul__ 反射乘法运算
- 065. __ror__ 反射位或运算
- 066. __round__(self,ndigits) 四舍五入对象
- 067. __rpow__ 反射幂运算
- 068. __rrshift__ 反射右移位运算
- 069. __rshift__(self,other) 右移位运算
- 070. __rsub__ 反射减法运算
- 071. __rtruediv__ 反射真除法运算
- 072. __rxor__ 反射位异或运算
- 073. __sub__(self,other) 减法运算
- 074. __truediv__(self,other) 真除法运算
- 075. __trunc__(self) 截断对象到最近的整数
- 076. __xor__(self,other) 位异或运算
- 077. _Ceiling__(self) 向上取整对象
11:位运算
- 078:__and__(self,other) 位与运算
- 079:__iand__(self,other) 就地位与赋值运算
- 080:__invert__(self) 位反运算,等同于~self
- 081:__lshift__(self,other) 左移位运算
- 082:__or__(self,other) 位或运算
12:序列化
- 083:__getinitargs__(self) 用于pickle反序列化,返回初始化参数
- 084:__getnewargs__(self) 用于pickle反序列化,返回新的初始化参数
- 085:__getstate__(self) 用于对象的序列化
- 086:__reduce__(self) 用于pickle序列化
- 087:__reduce_ex__(self,protocol) 用于pickle序列化,允许指定协议版本
- 088:__setstate__(self,state) 用于对象的反序列化
13:元数据
- 089:__class_getitem__(cls,key) 用于支持Class[int]这样的泛型类语法
- 090:__module__ 返回对象所在的模块名
- 091:__prepare__(metacls,name,bases,**kwds) 元类中使用,准备类的命名空间
- 092:__weakref__ 用于创建对象的弱引用
14:运算符
- 093:__ifloordiv__(self,other) 就地地板除法赋值运算
- 094:__ilshift__(self,other) 就地左移位赋值运算
- 095:__ior__(self,other) 就地位或赋值运算
- 096:__irshift__(self,other) 就地右移位赋值运算
- 097:__ixor__(self,other) 就地位异或赋值运算
15:字符串
- 098:__bytes__(self) 返回对象的字节表示
- 099:__format__(self,format_spec) 定义对象的格式化字符串
- 100:__getformat__(self,format_type) 用于高级字符串格式化
- 101:__repr__(self) 返回对象的“官方”字符串表示,用于调试
- 102:__str__(self) 返回对象的非正式字符串表示,用于打印输出
分类可能不是很确立,提出来修正一起提高。需要原图请私信!
猜你喜欢
- 2025-04-07 python中类class的魔法方法(python,class)
- 2025-04-07 这十道经典Python笔试题,全做对算我输
- 2025-04-07 最全python3.11版12类75个内置函数大全
- 2025-04-07 8-Python内置函数(python内置函数有)
- 2025-04-07 使用 Python 开发一个 Python 解释器
- 2025-04-07 python开三次方根函数怎么编写,两种设计方法
- 2025-04-07 python学习笔记:08面向对象(面向对象程序python)
- 2025-04-07 深入剖析Python基本函数:从基础到进阶的完整指南
- 2025-04-07 Python自动化办公自学笔记(四)浮点数
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)