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
相关推荐
1024奇点8 小时前
【仓颉语言入门 · 第二篇 第 22 课】
开发语言·ide·开源
实名上网宋凯宣8 小时前
Django
后端·python·django
Warren2Lynch8 小时前
C4 模型详解:利用 Visual Paradigm 可视化软件架构的综合指南
开发语言·uml
如若1239 小时前
【论文复现】CoFailMed:从零复现医学图像分割的共享失败审计,含完整代码流程与科研绘图
人工智能·python
Knight_AL9 小时前
Java 文件下载时文件名中的 `#` 被转换成 `%23`?一次 URL 编码与解码问题排查
java·开发语言
FRing0310 小时前
vue2干货总结2(v-bind、v-for、v-model、指令修饰符、v-bind操作class和style)
开发语言·前端·vue.js·vue2
by2099910 小时前
C++ 智能指针的所有权与使用
开发语言·c++·经验分享
砚底藏山河10 小时前
python量化自定义周期 K 线合成
java·开发语言·数据库·python·金融
视觉小萌新10 小时前
AI Class 3 · Chapter 1:变量、字符串、list/dict、if/for(python学习-小白版-有经验可跳过)
python·学习·list
IT召唤狮11 小时前
开源企业级零信任项目Pangolin,零信任能挡住PHP核弹漏洞吗?
开发语言·开源·php