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
相关推荐
D3bugRealm2 分钟前
cryptography:Python 开发者的加密标准库
开发语言·python·其他
Rain50910 分钟前
2.1 Nest.js 项目初始化与模块化架构
开发语言·前端·javascript·后端·架构·数据分析·node.js
HappyAcmen13 分钟前
5.通义向量模型调用
python
小熊美家熊猫系统28 分钟前
电子合同技术实现与合规实践
java·开发语言·分布式
ytttr87331 分钟前
C# 定时数据库备份工具
开发语言·数据库·c#
python-码博士1 小时前
PyTorch 从零实现 Flow Matching:训练、采样、画图一条龙
人工智能·pytorch·python
skywalk81631 小时前
言知项目后续方向建议
开发语言·学习·编程
王小王-1231 小时前
基于Python的车联网数据聚合与可视化分析平台设计与实现
python·车联网·新能源汽车·车联网聚合分析
拉勾科研工作室2 小时前
区块链工程毕业论文题目【249个】
开发语言·javascript
叫我:松哥2 小时前
基于Flask框架的校园二手书籍交易平台,注重校园场景的特殊需求,通过学号认证保障用户真实性
后端·python·sqlite·flask·bootstrap