专业编程基础技术教程

网站首页 > 基础教程 正文

最全python3.11版15类102个魔法方法__特殊方法__

ccvgpt 2025-04-07 12:27:04 基础教程 11 ℃


Python中的特殊方法(也称为魔术方法或双下划线方法)是以双下划线开头并结尾的一种函数或属性。这种方法有一种机制,当对象参与特定的操作时(如实例化、调用、迭代、比较等),Python解释器就会自动的调用相应的功能来执行特定的操作。

最全python3.11版15类102个魔法方法__特殊方法__

特殊方法主要是为了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) 返回对象的非正式字符串表示,用于打印输出

分类可能不是很确立,提出来修正一起提高。需要原图请私信!

Tags:

最近发表
标签列表