当前位置: 首页 > news >正文

python中的魔法方法

对象生命周期

方法说明
__new__(cls, …)创建实例(先于init
__init__(self, …)初始化实例
__del__(self)对象销毁
__call__(self, …)让实例可调用

属性访问控制

方法说明
__getattr__(self, name)属性不存在时
__getattribute__(self, name)所有属性访问
__setattr__(self, name, value)设置属性
__delattr__(self, name)删除属性

容器 / 集合行为

方法说明
__len__(self)len(obj)
__getitem__(self, key)obj[i]
__setitem__(self, key, val)obj[i] = v
__delitem__(self, key)del obj[i]
__iter__(self)for x in obj
__contains__(self, item)x in obj

数值运算(算数 & 位运算)

方法说明
__add__(self, other)+
__sub__(self, other)-
__mul__(self, other)*
_\truediv__(self, other)/
__pow__(self, other)**
__neg__(self)-obj

比较与排序

方法说明
__eq__(self, other)==
__ne__(self, other)!=
__lt__(self, other)<
__le__(self, other)<=
__gt__(self, other)>
__ge__(self, other)>=

字符串与格式化

方法说明
__str__(self)str(obj)
__repr__(self)repr(obj)
__format__(self, fmt)format(obj)
__\bytes__(self)bytes(obj)

上下文管理器

方法说明
__enter__(self)with obj:
__exit__(self, *exc)退出上下文

序列化 / Pickle

方法说明
__reduce__(self)pickle 重建
__reduce_ex__(self)pickle 协议扩展
__getstate__(self)控制序列化
__setstate__(self, state)控制反序列化

元类 & 类创建

方法说明
__prepare__(mcs, name, bases)准备命名空间
__instancecheck__(cls, obj)isinstance
__subclasscheck__(cls, sub)issubclass

描述符协议

方法说明
__get__(self, obj, cls)读属性
__set__(self, obj, value)写属性
__delete__(self, obj)删属性

常用但容易忽略

方法说明
__hash__(self)hash(obj)
__bool__(self)bool(obj)
__copy__(self)copy.copy
__deepcopy__(self, memo)copy.deepcopy
http://www.jsqmd.com/news/824761/

相关文章:

  • 如何用Sabaki快速打开和分析SGF棋谱文件:围棋爱好者的完整指南
  • AI驱动的代码冻结守护者:开源项目xcf如何提升软件发布质量
  • 离婚官司怎么打?2026上海十大离婚纠纷律师排名出炉(5月最新测评) - 外贸老黄
  • 跟着 MDN 学 HTML day_53:(深入理解 XPathResult 接口)
  • 去中心化AI智能体协作网络:SwarmVault架构设计与实践
  • Python人脸识别别再自己造轮子了!用DeepFace三行代码搞定年龄、性别、情绪分析
  • 极客桌面环境配置:从dotfiles到高效工作流
  • 使用HermesAgent对接Taotoken自定义模型供应商
  • Wonder3D:单图3D重建的革命性跨域扩散技术
  • Agent监控管理工具agenttop:实现自动化任务的可观测性与可控性
  • 告别手动画框!用飞桨EISeg 0.5.0,5分钟搞定遥感影像建筑物自动标注
  • Exynos 5420 ISP架构与图像处理技术解析
  • Parabolic:200+网站支持的跨平台视频下载神器
  • ul里能放div吗_列表项嵌套规范说明【说明】
  • CAN总线避坑指南:STM32F103通信异常?先看看TJA1051收发前后的波形对比(CAN_TX vs CAN_RX vs CAN_H)
  • 全球TOP3会展服务商都在用的PlayAI翻译配置模板(含中英日三语字幕同步渲染、唇动延迟补偿参数)
  • Nornir网络自动化监控插件:集成Sentry实现异常告警与上下文追踪
  • 基于CPX与CRICKIT的创客冰淇淋车:电机控制与交互系统实践
  • 机器人多物体抓取:扩散策略与模仿学习的创新应用
  • 别再傻傻分不清了!保姆级图解GPU、CUDA、cuDNN的关系与安装避坑指南
  • 用嘉立创EDA专业版做比赛项目:一个灯光控制器的完整设计复盘与优化思路
  • 无刷电机方波驱动进阶:基于STM32和IR2101S,如何让你的电机转得更稳、停得更准?
  • Godot游戏开发:模块化系统集成与事件驱动架构实战
  • Meta-Learning新视角:为什么说Reptile是‘聪明’的预训练?(从直觉到实验的深度解读)
  • 0405开源光刻机整机控制与量检测系统(A级 中期集中攻坚)5. 开源纳米量检测国产化替代方案(全链路替代·低成本落地·性能对标进口·喂饭级实施)
  • STM32与OpenMV协同实战:多色赛道视觉循迹与串口协议解析
  • 使用Taotoken后团队月度大模型API成本下降了可观比例
  • 5分钟配置Python大麦网自动化抢票脚本:告别手速比拼的技术方案
  • 自动化代码重构工具 abra:基于AST的代码现代化与质量提升实践
  • 别再在生产环境用KEYS了!Redis模糊查询的正确姿势:SCAN命令实战与避坑指南