欢迎访问服务百科信息网!
首页 >文化 >python 3 面向对象编程
python 3 面向对象编程

python 3 面向对象编程

(Python 3 面向对象编程(第2版))
《Python 3 面向对象编程(第2版)》全面介绍Python 3面向对象编程的特性,并且通过实践案例把知识串起来,方便读者学以致用【加】Dusty Phillips 著孙雨生 译ISBN 978-7-121-34136-62018年6月出版定价:99.00元440页16开
python 3 面向对象编程资料
  • 出版时间:2018年06月
  • 开本:16 开
  • ISBN:9787121341366
  • 页数:440 页
  • 作者:孙雨生
  • 版次:01-01
  • 正文

    编辑推荐

    本书包含如下内容。

    √ 通过创建类、定义方法来实现Python对象

    √ 将相关对象归类到不同类中,并通过类接口描述这些对象的属性和行为

    √ 使用继承关系扩展类的功能

    √ 理解何时使用面向对象特征,以及更重要的是,何时不该使用

    √ 发现哪些设计模式在Python中有所不同及其原因

    √ 发现单元测试的简易之处,以及为何它对于Python如此重要

    √ 学习Python3中常见的并发技术及其陷阱

    √ 探索最新的AsyncIO模块来开发大规模并发网络系统

    内容提要

    《Python 3 面向对象编程(第2版)》主要介绍如何使用Python 3进行面向对象编程。第1~4章介绍面向对象这一编程范式的基本准则,以及Python是如何运用这些准则实现面向对象编程的;第5~8章介绍如何利用Python中的内置函数快速、简单地实现面向对象编程;第9~11章介绍许多面向对象编程中常用的设计模式,以及如何使用符合Python语言习惯的方式来实现这些设计模式;最后,第12、13章介绍Python 3中与并发编程相关的主题。

    《Python 3 面向对象编程(第2版)》中的每一章都会包含一节案例学习的内容,通过一个实践相关的案例将本章介绍的主要内容以及前面章节中介绍过的内容串联起来。除此之外,每一章最后的练习旨在指导你利用本章学习到的知识,使用面向对象编程改善以往项目中的代码,并进一步掌握如何在合适的时机使用Python 3进行面向对象编程。

    目录

    第1章 面向对象设计 1

    面向对象 1

    对象和类 3

    指定属性和行为 5

    数据描述对象 5

    行为就是动作 7

    隐藏细节并创建公共接口 8

    组合 11

    继承 13

    继承提供抽象 15

    多重继承 16

    案例学习 16

    练习 24

    总结 24

    第2章 Python对象 26

    创建Python类 26

    添加属性 28

    让它做点什么 29

    初始化对象 32

    自我解释 34

    模块和包 36

    组织模块 38

    组织模块内容 41

    谁可以访问我的数据 44

    第三方库 46

    案例学习 48

    练习 56

    总结 57

    第3章 对象相似时 58

    基本的继承 58

    扩展内置对象 60

    重写和super 62

    多重继承 63

    钻石型继承问题 66

    不同集合的参数 71

    多态 74

    抽象基类 77

    使用抽象基类 77

    创建抽象基类 78

    魔术揭秘 80

    案例学习 82

    练习 95

    总结 95

    第4章 异常捕获 96

    抛出异常 96

    抛出一个异常 98

    异常的作用 99

    处理异常 101

    异常的层级 106

    定义我们自己的异常 108

    案例学习 112

    练习 122

    总结 123

    第5章 何时使用面向对象编程 124

    将对象看作对象 124

    通过属性向类数据添加行为 128

    属性的细节 131

    装饰器——另一种创建属性的方法 133

    决定何时使用属性 134

    管理员对象 136

    移除重复代码 139

    实践 141

    案例学习 144

    练习 152

    总结 153

    第6章 Python数据结构 154

    空对象 154

    元组和命名元组 155

    命名元组 157

    字典 159

    字典用例 162

    使用defaultdict 163

    列表 166

    列表排序 168

    集合 171

    扩展内置类型 175

    队列 180

    FIFO队列 181

    LIFO队列 183

    优先级队列 184

    案例学习 186

    练习 193

    总结 194

    第7章 Python面向对象的捷径 195

    Python内置函数 195

    len()函数 195

    反转函数 196

    枚举 198

    文件I/O 199

    放在上下文管理器中 201

    方法重载的另一种方式 203

    默认参数 204

    变量参数列表 206

    参数解包 209

    函数也是对象 210

    将函数作为属性 215

    可调用对象 216

    案例学习 217

    练习 224

    总结 225

    第8章 字符串与序列化 226

    字符串 226

    字符串操作 227

    字符串格式化 229

    字符串是Unicode 236

    可变字节字符串 240

    正则表达式 241

    匹配模式 242

    从正则表达式中获取信息 246

    序列化对象 249

    自定义序列化 251

    序列化Web对象 253

    案例学习 256

    练习 262

    总结 263

    第9章 迭代器模式 265

    设计模式简介 265

    迭代器 266

    迭代器协议 266

    推导 269

    列表推导 269

    集合与字典推导 271

    生成器表达式 272

    生成器 274

    从另一个可迭代对象中产生 277

    协程 279

    回到日志解析 282

    关闭协程并抛出异常 285

    协程、生成器与函数的关系 285

    案例学习 286

    练习 293

    总结 294

    第10章 Python设计模式I 295

    装饰器模式 295

    装饰器的例子 296

    Python中的装饰器 299

    观察者模式 301

    观察者模式的例子 302

    策略模式 304

    策略模式的例子 305

    Python中的策略 307

    状态模式 307

    状态模式的例子 308

    状态与策略 314

    状态转换作为协程 314

    单例模式 315

    单例模式的实现 315

    模板模式 319

    模板模式的例子 319

    练习 323

    总结 324

    第11章 Python设计模式II 325

    适配器模式 325

    门面模式 328

    享元模式 331

    命令模式 335

    抽象工厂模式 340

    复合模式 344

    练习 349

    总结 350

    第12章 测试面向对象程序 351

    为什么要测试 351

    测试驱动开发 353

    单元测试 354

    断言方法 355

    减少模板代码并进行清理 357

    组织和运行测试 359

    忽略失败的测试 359

    用py.test进行测试 361

    一种完成设置和清理的方式 363

    一种完全不同的设置变量的方式 366

    在py.test中跳过测试 370

    模拟昂贵的对象 371

    多少测试才足够 375

    案例学习 378

    实现它 379

    练习 384

    总结 385

    第13章 并发 386

    线程 386

    线程的诸多问题 390

    线程的超常开支 391

    多进程 392

    多进程池 394

    队列 396

    多进程的问题 398

    Future对象 398

    AsyncIO 401

    AsyncIO实践 402

    读取AsyncIO中的Future对象 403

    在网络编程中使用AsyncIO 404

    executor封装阻塞代码 407

    流 409

    案例学习 410

    练习 416

    总结 417

    作者简介

    Dusty Philips是一位来自加拿大的软件开发者和作者,现居于华盛顿州的西雅图市。作者在过去15年间活跃于开源社区并主要以Python作为开发语言。他是著名的Puget Sound Programming Python会议组的共同创始人,如果你在附近区域,欢迎前往参加相关会议。

    Python 3面向对象编程》由Packt出版社出版,这是他的第一本书。他同时也创作了书籍《用Kivy创建应用》(O’Reilly),介绍关于Python的移动开发库。同时其发布了Hacking Happy,介绍技术人员的精神健康之旅。他曾在本书第1版出版之后不久因为自杀倾向而入院治疗,并自此成为精神健康的公开倡导者。

    译者序

    Python是一门多范式编程语言,这意味着你可以用它进行面向对象编程,也可以选择使用面向过程编程的方式,甚至可以尝试函数式编程。而Python最令人着迷之处在于,它拥有极大灵活性的同时,使用的是十分简单、优雅的语法,因此甚至被称为“可执行的伪代码”。本书主要围绕Python面向对象编程相关的概念与方法,同时也介绍了一些Python 3的新增功能、特性。众所周知,Python 3的升级、推广在Python开发者中一直存在较多争议,批判者的声音主要集中在其向后不兼容这一点。不过译者认为Python 3是非常值得开发者花时间去学习、升级的,Python 3中的字符串默认采用UTF-8编码,这无疑给中文环境的开发者带来了极大的便捷;此外,采用新的异步编程模型也使得Python在服务器开发领域更具竞争力。幸运的是,本书对于这几点都通过单独章节分别进行了详细介绍,无论读者是刚刚接触Python的初学者,还是打算将Python从之前的版本升级到最新的版本,本书都将很有帮助。

    第2版序

    我需要忏悔,在我写本书第1版的时候,我根本不知道自己在做什么。我认为我了解Python并且知道该怎么写。很快我就发现这是错的。幸运的是,通过本书的写作我已经完全适应了这两点。

    我担心大家可能会不喜欢《Python 3面向对象编程》这本书,所以我两年没有参加PyCon。直到收获了几十条正面的反馈,我才重获信心,终于参加了2012年在圣克拉拉举办的PyCon。我很快发现每个人都听说过我或我的书,完全是我庸人自扰!

    书写完之后我也很怕重新阅读它。在收到诸多赞誉之前,它一直严实地放在我的书架上,直到我需要引用其中的内容回答读者的提问。在准备本书第2版的时候,我最终不得不面对我的心魔。令我惊喜和开心的是,我发现5年前自己所写的这本书既准确又令人愉快,一如很多读者的评价所提到的。

    初次阅读之后不久,我收到了来自Amazon上的第一条负面评价。如果我在完成本书后立即看到这条评价,那将是毁灭性的。幸运的是,4年来的正面评价以及我自己对写作上的自信,让我可以忽略辛辣的批评并将剩下的部分作为建设性的反馈。事实上,读者提出的很多瑕疵都是本书最初出版时Python还未实现的特征。《Python 3面向对象编程》出版已经有些年头了,显然已经到了需要升级的时候。升级的结果现在已经在你手里(或在你的电子书阅读器上)。

    我经常纳闷,为什么技术类书籍的作者要如此详细地描述不同版本书籍之间的区别。我的意思是,有多少人会在读了第1版之后还读第2版呢?就像软件的版本一样,你可以笃定最新的版本是最好的,但你不会真的想要关心它的历史。不过,这本书占据了我过去一年大部分的时间,所以我不得不提一下这本书已经变得多好了。

    其实第1版组织得稍微有些混乱,很多章节结束之后直接跳到下一章,有几个关键位置上的主题之间存在跳跃,甚至更糟糕的是,彼此不相关。现在,讨论设计模式之前的2章被重新调整并分为3章,这样更加顺畅地切换到下一个主题。

    我同时也彻底删除了关于Python 3第三方库的一整章内容。在Python 3和这本书都还是新鲜事物的时候,这一章的存在还算合理。只有几个库移植到Python 3,对它们进行详尽的讨论是合理的。不过,我没办法深入探讨这些主题的细节,坦白地说,针对每一个主题我都可以再写一整本书。

    最后,我添加了全新的一章,关于并发的内容。关于这一章我纠结了一阵,现在可以坦白承认它与面向对象编程并没有直接的关系。然而,和单元测试那一章一样,我认为理解并发是所有语言中不可或缺的部分,特别是对于Python生态系统中的面向对象编程。当然,如果你不同意大可跳过这些章节(或者等你改变主意之后再来阅读它们)。

    请尽情享受这本书以及你的面向对象编程之旅!

    Dusty Phillips

    前言

    本书介绍了面向对象范式的相关术语,通过循序渐进的例子聚焦面向对象设计。本书介绍从简单且是面向对象编程工具箱中最有用的继承关系,到异常处理和设计模式的内容,以一种面向对象的方式来看待面向对象的概念。

    在这一过程中,我们将会学习整合Python编程语言中面向对象和非面向对象的方面,学习操作文件和字符串的复杂性,并强调(正如Python 3所做的)二进制和文本数据的区别。

    我们将会发现单元测试的乐趣,会用到两个单元测试框架。最后,我们会探索Python众多的并发范式,学习如何让不同对象在同一时间一起运行。

    本书包含哪些内容

    本书可以粗略地分为4个主要部分。前4章我们将会深入探讨面向对象编程的准则以及Python是如何运用它们的。第5~8章我们将会通过学习这些准则是如何应用到Python内置函数中的,来探讨一些Python特有的应用。第9~11章是关于设计模式的内容。最后两章探讨与Python编程相关同时可能很有趣的主题。

    第1章,面向对象设计,介绍了重要的面向对象概念。主要关于一些相关术语,如抽象、类、封装、继承。我们也简单地介绍了用来建模类和对象的UML

    第2章,Python对象,讨论类和对象以及如何在Python中使用它们。我们将会学习Python对象的属性和行为,以及如何将类组织到包和模块中去。最后,我们将会学习如何保护我们的数据。

    第3章,对象相似时,帮助我们更加深入地探讨继承关系。包括多重继承以及如何扩展内置类型。这一章也介绍了多态和鸭子类型在Python中是如何运作的。

    第4章,异常捕获,介绍异常和异常处理。我们将会学习如何创建我们自己的异常,以及如何利用异常控制程序流程。

    第5章,何时使用面向对象编程,介绍如何创建和使用对象。我们将会看到如何用属性封装数据以及限制数据的访问。这一章也讨论了DRY准则以及如何避免代码重复。

    第6章,Python数据结构,介绍Python内置类的面向对象特征。我们将会学习元组、字典、列表以及集合,还有几个更高级的容器类型。我们也将学习如何扩展这些标准对象。

    第7章,Python面向对象的捷径,正如标题所言,这一章介绍使用Python节省时间的方法。我们将会学习很多有用的内置函数,例如用默认参数实现方法重载。我们也将看到函数本身也是对象的特性以及如何利用这一特性。

    第8章,字符串与序列化,介绍字符串、文件以及格式化。我们将会讨论字符串、字节以及字节数组之间的区别,还有将序列化文本、对象和二进制数据转化为几种规范表示的多种不同方式。

    第9章,迭代器模式,介绍了设计模式的概念,以及迭代器模式的Python图形化实现。我们将会学习列表、集合以及字典的推导形式。我们也将理解生成器与协程。

    第10章,Python设计模式I,介绍了几种设计模式,包括装饰器模式、观察者模式、策略模式、状态模式、单例模式以及模板模式。每一种设计模式都通过Python实现的相关的例子程序进行讨论。

    第11章,Python设计模式II,专注讨论更多的设计模式,如适配器模式、门面模式、享元模式、命令模式、抽象模式以及组合模式。用更多的例子说明Python习惯用法与规范实现之间的区别。

    第12章,测试面向对象程序,以介绍为何对Python应用进行测试如此重要为开始。强调测试驱动开发,并介绍两种不同的测试工具unittest和py.test。最后,讨论模拟测试对象和代码覆盖率相关内容。

    第13章,并发,这一章是关于Python所支持(以及缺乏)的并发模式的速成教程。讨论了线程、多进程、Future以及新的AsyncIO库。

    每一章都包含相关的例子和一个案例学习,案例学习会将本章内容整合到一个可运行的(可能不完整的)程序中。

    学习本书你需要用到什么

    本书中所有的例子都是基于Python 3解释器的。确保你用的不是Python 2.7或更早的版本。在写本书时,Python 3.4是最新的版本。大部分例子也可以在较早版本的Python 3中运行,但是为了最大限度地减少可能给你带来的失望情绪,最好用最新版本。

    所有的例子都可以运行在任何支持Python的操作系统上。如果不能,请作为错误信息提交给我。

    有些例子需要连接互联网。你可能会想要有一个这样的课外研究和调试。

    除此之外,本书中有些例子依赖于不使用Python的第三方库。在用到它们的时候会进行介绍,因此你并不需要提前安装。但是为了保持完整性,下面列出会用到的所有库:

    pip

    requests

    pillow

    bitarray

    本书的目标读者

    本书尤其针对那些没有面向对象编程经验的人,同时也假设你已经拥有了基本的Python技能。你将会深入学习面向对象准则。对于将Python用作“胶水”语言并希望提升编程技巧的系统管理员来说,本书也特别有用。

    如果你熟悉用其他语言进行面向对象编程,那么本书将会帮助你用符合Python语言习惯的方式将你的这些知识应用到Python生态系统中。[1]

    参考资料

    [1] Python 3 面向对象编程(第2版) · 豆瓣[引用日期2018-07-10]

  • 上一篇百科:Python面向对象编程指南
  • 下一篇百科:C#面向对象编程