大家好,我是正在实战各种 AI 项目的程序员晚枫。
让自己的类支持索引、切片、迭代,像内置列表一样好用!
🎯 实现自定义序列
扑克牌示例
1 | class Deck: |
支持的运算
实现 __len__和__getitem__ 后,自动支持:
- len() 函数
- 索引访问(deck[0])
- 切片(deck[:5])
- for 循环
- in 运算符
- reversed()
- 排序
🦆 鸭子类型
概念
1 | # 不关注类型,只关注行为 |
Python 式的抽象
Python 不要求类继承特定的基类,只要实现了需要的协议(方法),就可以像那个类型一样使用。
1 | # 只要实现了__iter__和__next__,就是迭代器 |
🎯 本讲总结
自定义序列:实现 __len__和__getitem__。
自动支持的操作:索引、切片、迭代、排序等。
鸭子类型:不关注类型,只关注行为。
📚 推荐教材
《Python 编程从入门到实践(第 3 版)》 | 《流畅的 Python(第 2 版)》 | 《CPython 设计与实现》
学习路线: 零基础 → 《从入门到实践》 → 《流畅的 Python》 → 本门课程 → 《CPython 设计与实现》
🎓 加入《流畅的 Python》直播共读营
学到这里,如果你想系统吃透这本书——欢迎加入我的直播共读课。
- 每周直播精讲,逐章拆解核心知识点
- 专属学习群,随时答疑交流
- 试运营特惠:
499 元→ 299 元
👉 【立即报名《流畅的 Python》共读课】:https://mp.weixin.qq.com/s/ivHJwn1nNx5ug4TFrapvGg
🔗 课程导航
← 上一讲:对象引用与可变性 | 下一讲:继承与组合 →
💬 联系我
| 平台 | 账号/链接 |
|---|---|
| 微信 | 扫码加好友 |
| B 站 | Python 自动化办公社区 |
主营业务:AI 编程培训、企业内训、技术咨询
