超超哥AI云计算超哥讲AI 出品

社群入口

AI 超哥 Codex 副业群

扫码加入群聊,一起交流 AI、Codex 与副业实践。

原图注明二维码于10月20日前有效;若提示过期或无法入群,请等待更新二维码。

AI 超哥 Codex 副业群入群二维码在新窗口打开原图

特殊方法与 Python 数据模型

面向对象与高级 Python#Python全栈#第三阶段#面向对象与高级 Python#特殊方法与 Python 数据模型约 596 字 · 2 分钟阅读
追问显示
点击任意追问卡片可收起 / 展开

__str__() 与 __repr__() 有什么区别?

追问 面向用户展示与开发排错如何选择?为什么对象表示中不应包含密码或 Token?

如何让自定义对象支持 len() 与真假判断?

追问 __len__() 与 __bool__() 如何参与判断,各自的返回值有什么约束?

__eq__() 应如何定义业务相等性?

追问 两个用户是按身份编号还是全部字段比较?遇到不支持的类型如何处理?

相等性与 __hash__() 为什么需要保持一致?

追问 对象作为字典 Key 后,参与哈希计算的字段变化可能产生什么问题?

__getitem__() 如何让对象支持下标访问?

追问 整数索引、切片、不合法 Key 和越界应该怎样定义行为?

__contains__() 可以定义什么成员判断?

追问 item in collection 判断 ID 还是对象,需要如何在接口中说明?

__call__() 如何让实例像函数一样使用?

追问 带配置的校验器或策略对象什么时候适合这种接口?

__new__() 与 __init__() 在生命周期中有什么区别?

追问 什么时候才有必要自定义对象创建行为?为什么普通业务类通常不用改写 __new__()?

为什么不应依赖 __del__() 及时释放关键资源?

追问 对象生命周期、引用关系与解释器退出如何影响清理?还有什么更明确的管理方式?

__slots__ 解决什么问题,又有哪些限制?

追问 动态属性、继承与内存占用如何验证?为什么它不是权限保护或通用性能开关?

特殊方法的调用约定可参考 Python 官方数据模型文档,不要只根据方法名字推测行为。