Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Fluent Python 2nd Edition - 学习实践

这是我在阅读《流畅的Python(第二版)》(Fluent Python, 2nd Edition) 过程中的代码实践、测试用例与学习笔记仓库。

📂 文件导航

  • chapter17.py
    • 探索了 Python 中的面向对象协议。
    • 序列协议的实现(__getitem__ 与 __len__)。
    • 核心探讨:鸭子类型(Duck Typing) vs 白鹅类型(Goose Typing) 的本质区别与 isinstance 的底层逻辑。
  • main.py
    • 项目入口及通用示例。
  • docs/

💡 核心概念笔记

🦆 鸭子类型 (Duck Typing)

“如果它走起来像鸭子,叫起来像鸭子,那它就是鸭子。”

  • 行为至上:不关注对象的真实继承关系,只关注对象是否实现了我们需要的特定方法(如魔法方法)。
  • 特点:极度灵活,隐式契约。不需要继承任何基类,依靠解释器运行时的行为来驱动。

🦢 白鹅类型 (Goose Typing)

显式声明的契约精神。

  • 接口校验:通过继承 collections.abc 模块中的抽象基类(ABC),或使用 register 进行虚拟子类注册,显式地声明对象实现了哪些接口。
  • 特点:配合 isinstance(obj, abc.SomeABC) 进行严谨的类型检查,避免诸如“字典”与“序列”仅因为具有同名方法(如 __getitem__)而被混淆。

🛠 运行环境

  • Python 3.x
  • 使用 uv 管理项目依赖。

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages