网站首页 > 技术文章 正文
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) 返回对象的非正式字符串表示,用于打印输出
分类可能不是很确立,提出来修正一起提高。需要原图请私信!
- 上一篇: Python中关于魔法方法、单例模式的知识
- 下一篇: Python 类和方法
猜你喜欢
- 2025-03-07 深入理解 Python 元类:概念、语法与应用场景
- 2025-03-07 一文了解 Python 元类
- 2025-03-07 一文搞懂 Python 中的类和对象
- 2025-03-07 乐高python编程入门——类及其属性和方法
- 2025-03-07 Python 私有属性 & 私有方法
- 2025-03-07 如何理解Python类中的self?
- 2025-03-07 如何写好一个 Python的高质量的类
- 2025-03-07 Python 内部类:优雅地组织代码
- 2025-03-07 python入门040:根据类创建实例
- 2025-03-07 了解 Python 类和元类
- 265℃Python短文,Python中的嵌套条件语句(六)
- 264℃python笔记:for循环嵌套。end=""的作用,图形打印
- 263℃PythonNet:实现Python与.Net代码相互调用!
- 258℃Python实现字符串小写转大写并写入文件
- 257℃Python操作Sqlserver数据库(多库同时异步执行:增删改查)
- 117℃原来2025是完美的平方年,一起探索六种平方的算吧
- 98℃Python 和 JavaScript 终于联姻了!PythonMonkey 要火?
- 90℃Ollama v0.4.5-v0.4.7 更新集合:Ollama Python 库改进、新模型支持
- 最近发表
- 标签列表
-
- python中类 (31)
- python 迭代 (34)
- python 小写 (35)
- python怎么输出 (33)
- python 日志 (35)
- python语音 (31)
- python 工程师 (34)
- python3 安装 (31)
- python音乐 (31)
- 安卓 python (32)
- python 小游戏 (32)
- python 安卓 (31)
- python聚类 (34)
- python向量 (31)
- python大全 (31)
- python次方 (33)
- python桌面 (32)
- python总结 (34)
- python浏览器 (32)
- python 请求 (32)
- python 前端 (32)
- python验证码 (33)
- python 题目 (32)
- python 文件写 (33)
- python中的用法 (32)