新書推薦:
《
知宋·宋代之司法
》
售價:HK$
99.7
《
空间与政治
》
售價:HK$
87.4
《
少年读三国(全套12册)
》
售價:HK$
490.6
《
不完美之美:日本茶陶的审美变
》
售價:HK$
87.4
《
现代化的迷途
》
售價:HK$
98.6
《
钛经济
》
售價:HK$
77.3
《
甲骨文丛书·无垠之海:世界大洋人类史(全2册)
》
售價:HK$
322.6
《
中国救荒史
》
售價:HK$
109.8
|
編輯推薦: |
本书包含如下内容。
通过创建类、定义方法来实现Python对象
将相关对象归类到不同类中,并通过类接口描述这些对象的属性和行为
使用继承关系扩展类的功能
理解何时使用面向对象特征,以及更重要的是,何时不该使用
发现哪些设计模式在Python中有所不同及其原因
发现单元测试的简易之处,以及为何它对于Python如此重要
学习Python 3中常见的并发技术及其陷阱
探索*的AsyncIO模块来开发大规模并发网络系统
|
內容簡介: |
本书主要介绍如何使用Python 3进行面向对象编程。1~4章介绍面向对象这一编程范式的基本准则,以及Python是如何运用这些准则实现面向对象编程的;第5~8章,介绍如何利用Python中的内置函数快速、简单地实现面向对象编程;第9~11章介绍了许多面向对象编程中常用的设计模式,以及如何使用符合 Python 语言习惯的方式来实现这些设计模式;*后第12、13章介绍了Python 3中并发编程相关的主题。本书中每一章都会包含一节案例学习的内容,通过一个实践相关的案例将本章介绍的主要内容以及前面章节中介绍过的内容串联起来。除此之外,每一章*后的练习旨在指导你利用本章学习到的内容,使用面向对象编程改善以往项目中的代码,并进一步掌握如何在合适的时机使用Python 3进行面向对象编程。
|
關於作者: |
Dusty Philips是一位来自加拿大的软件开发者和作者,现居于华盛顿西雅图。作者在过去15年间活跃于开源社区并主要以Python作为开发语言。他是著名的Puget Sound Programming Python会议组的共同创始人,如果你在附近区域欢迎前往参加相关会议。《Python 3面向对象编程》由Packt出版社出版,这是他的第一本书。他同时也创作了书籍《用Kivy创建应用》(O''Reilly),介绍关于Python的移动开发库。同时其发布了Hacking Happy,介绍技术人员的精神健康之旅。他曾在本书第1版出版之后不久因为自杀倾向而入院治疗,并自此成为积极精神健康的公开倡导者。
Dusty Philips是一位来自加拿大的软件开发者和作者,现居于华盛顿西雅图。作者在过去15年间活跃于开源社区并主要以Python作为开发语言。他是著名的Puget Sound Programming Python会议组的共同创始人,如果你在附近区域欢迎前往参加相关会议。《Python 3面向对象编程》由Packt出版社出版,这是他的第一本书。他同时也创作了书籍《用Kivy创建应用》(O''Reilly),介绍关于Python的移动开发库。同时其发布了Hacking Happy,介绍技术人员的精神健康之旅。他曾在本书第1版出版之后不久因为自杀倾向而入院治疗,并自此成为积极精神健康的公开倡导者。
|
目錄:
|
第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
重写和super62
多重继承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
使用defaultdict163
列表166
列表排序168
集合171
扩展内置类型175
队列180
FIFO队列181
LIFO队列183
优先级队列184
案例学习186
练习193
总结194
第7章Python面向对象的捷径195
Python内置函数195
len函数195
反转函数196
枚举198
文件IO199
放在上下文管理器中201
方法重载的另一种方式203
默认参数204
变量参数列表206
参数解包209
函数也是对象210
将函数作为属性215
可调用对象216
案例学习217
练习224
总结225
第8章字符串与序列化226
字符串226
字符串操作227
字符串格式化229
字符串是Unicode236
可变字节字符串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设计模式I295
装饰器模式295
装饰器的例子296
Python中的装饰器299
观察者模式301
观察者模式的例子302
策略模式304
策略模式的例子305
Python中的策略307
状态模式307
状态模式的例子308
状态与策略314
状态转换作为协程314
单例模式315
单例模式的实现315
模板模式319
模板模式的例子319
练习323
总结324
第11章Python设计模式II325
适配器模式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
AsyncIO401
AsyncIO实践402
读取AsyncIO中的Future对象403
在网络编程中使用AsyncIO404
用executor封装阻塞代码407
流409
案例学习410
练习416
总结417
|
內容試閱:
|
译者序
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生态系统中。
约定
本书使用不同的文本格式来区别不同的信息。下面是一些格式的例子,以及它们的含义。
文本中的代码、数据库表名、目录名、文件名、文件后缀名、路径名、URL、用户输入以及Twitter用户名以如下方式展示:我们从字典中查询类,并存储到名为PropertyClass的变量中。
一个代码块可以设定为如下所示的样式:
def add_propertyself:
property_type = get_valid_input
"What type of property? ",
"house", "apartment".lower
payment_type = get_valid_input
"What payment type? ",
"purchase", "rental".lower
当我们想要让你特别关注
|
|