Python 3面向对象编程

不仅要知道移动棋子的各种规则,还要知道典型的开局、战术和策略。

虽然Python是一门多范式的编程语言,但是我认为其更偏向于面向对象,而不是函数式。函数之所以是一等公民,是由于函数也是一种类型。动态类型赋予了灵活性的同时,也要求我们有驾驭它的能力。

本书是一本披着面向对象外衣的Python语法书,展示了多重继承的复杂性与super的用法,用Python语言描述了一些设计模式,提供了不大不小、刚刚好的代码示例。美中不足的是,最后一章《并发》容易让人看得发蒙。

设计模式与语言无关,它是一种组织代码的技巧,采用封装多态继承组合等手法,使系统变得更为正交。设计模式所要达到的效果,就如同——小说中某章节里的某情节,人物(对象)间的交互、切换要显得自然,用精炼的语言刻画人物,用为数不多的人物丰满故事。

文摘

面向对象的分析与设计就是为了弄清楚这些对象是什么以及它们之间如何交互。面向对象设计中建模对象的关键目的在于,决定该对象的公共接口是什么。抽象意味着只处理与给定任务相关的最必要的一层细节,是从内部细节中提取公共接口的过程。在抽象接口时,尽量只对必需的内容进行建模。

根据经验法则,如果你认为你需要多重继承,那么你可能错了;但是如果你知道你需要它,那么你可能是对的。不要仅仅因为你可以使用对象就急着用,但是也永远不要在你需要用到类的时候疏于使用。

策略模式中的每个策略对象都不需要知道彼此的存在;而在状态模式中,要么是状态对象,要么是上下文对象,需要知道有哪些状态可以切换。