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
相关推荐
m0_596749091 小时前
Vue.js计算属性computed依赖追踪与副作用函数effect关联机制
jvm·数据库·python
fox_lht1 小时前
12.3.使用生命周期使引用一直有用
开发语言·后端·rust
神明9311 小时前
Golang testing怎么写单元测试_Golang单元测试教程【经典】
jvm·数据库·python
开发者联盟league1 小时前
在cursor中配置c/c++开发环境
c语言·开发语言·c++
初圣魔门首席弟子1 小时前
bug 2026.05.15(以前能运行的java springboot项目突然间不能运行后台数据了)
java·开发语言·bug
求知也求真佳1 小时前
S19|MCP 与插件:多 Agent 平台 —— 外部能力总线,让外部工具安全接入
开发语言·agent
keineahnung23451 小时前
為什麼要有 eval_is_non_overlapping_and_dense?PyTorch 包裝層與調用端解析
人工智能·pytorch·python·深度学习
测试员周周1 小时前
【Appium 系列】第07节-API测试封装 — BaseAPI 的设计与实现
开发语言·人工智能·功能测试·测试工具·appium·自动化·测试用例
您^_^1 小时前
CosyVoice 在 Windows 上推理不报错、不崩溃,但生成的音频文件是“意义不明“乱码音频
python·个人开发·cosyvoice