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) obji
setitem(self, key, val) obji = v
delitem(self, key) del obji
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
相关推荐
蹊黎28 分钟前
C++中vector类的部分简单实现
开发语言·c++·visual studio
IT_Octopus5 小时前
【零基础入门 LLM 开发 · Day 13】:LangChain 的对话记忆——Message 对象版
人工智能·python·langchain
2603_965148116 小时前
社区与学习资源:从入门到精通的API选品学习路径
数据库·人工智能·python·学习·数据挖掘
程序猿追6 小时前
kotlin-retry 接入鸿蒙后,怎样确认它真的会停止重试
开发语言·kotlin·harmonyos
我是人✓7 小时前
Java文件上传三方式对比:从传统到SpringBoot
java·开发语言
智能直播7 小时前
网络RTMP拉流不卡顿、声音不同步,一文讲透缓冲区、时间戳
开发语言·ffmpeg·php·音视频·视频编解码
CCblandy7 小时前
令牌桶在 0.9 倍负载超发 19%、固定窗口边界放行 20 个:四种限流算法同构实测
后端·python·算法·性能优化·架构
墨云安全7 小时前
内网资产无法暴露到公网,怎么做安全检测?2026 年内网渗透测试的落地路径
开发语言·安全·网络安全·渗透测试·php
摇滚侠8 小时前
《计算机是如何工作的:人人都能懂的计算机软硬件工作原理》第 9 章 机器码与汇编语言 阅读笔记 9
java·开发语言·笔记
Cc.Y8 小时前
Java零基础入门:深入Java核心:文件IO与序列化全解
java·开发语言·python