Fluent Python 9.6分
读书笔记 Interfaces and Protocols in Python Culture
三諼愺

初见 Duck Typing 和 Monkey Patching 的时候,总是会回想起在 O'Reilly 书籍封面中出现的小伙伴们。

http://dwz.cn/wMqVw7d7

关于「鸭子类型」,书中是这么说的:

Operating with objects regardless of their types, as long as they implement certain protocols

它是一种基于特征/行为而不是类型的多态。用 James 的话可以更形象地理解这种 is-a 哲学——When I see a bird that walks like a duck and swims like a duck and quacks like a duck, I call that bird a duck.

再看声名狼藉的「猴子补丁」:

Changing a class or module at runtime, without touching the source code

这种再运行时动态修改行为的能力实在有点逆天。你说的我都懂,但问题来了,这和猴子有什么关系?一番考据后,发现它的演变过程之一大概是这样的:Guerrilla Patch, Gorilla Patch, Monkey Patch。( http://xiaoquqi.github.io/blog/2015/08/18/about-monkey-patch/

在漫长的学习过程中有一件事总是让我很难过,大概就是碰到如上每个字都认识但连在一起就懵逼的「专业术语」。有时候会觉得这就像华尔街精英造出 Collateralized Debt Obligation 或者 Credit Default Swaps 这种足以凸显身份好让人觉得只有他们才能理解的词语一样让人恨得牙痒;有时又幻想自己也抽象概括出一个广为传播的概念好让沟通减少理解差异与成本。不过这都是题外话了。

0
《Fluent Python》的全部笔记 6篇
豆瓣
免费下载 iOS / Android 版客户端