內容提要
Python 是一種面向對象的解釋型語言,面向對象是其非常重要的特性。《Python 3面向對象編程》通過Python 的數據結構、語法、設計模式,從簡單到複雜,從初級到高級,一步步通過例子來展示了Python 中面向對象的概念和原則。
《Python 3面向對象編程》不是Python 的入門書籍,適合具有Python 基礎經驗的開發人員閱讀。如果你擁有其他面向對象語言的經驗,你會更容易理解《Python 3面向對象編程》的內容。
作者簡介
Dusty Phillips 是一名加拿大自由軟體開發人員、教師、武術家以及開源愛好者。他和Arch Linux 社區以及其他開源社區有著緊密聯繫。他維護著Arch Linux 的入口網站以及編譯了流行的Arch Linux 手冊。Dusty 持有計算機科學人機互動方向的碩士學位。他當前在自己的計算機里安裝了6 種不同的Python 解釋器。
譯者簡介
肖鵬,畢業於北京理工大學信息與通信工程專業,2011年起就職于思科系統(中國)信息技術服務有限公司,是一名網路諮詢工程師,具有多年Python網路開發經驗。
常賀,畢業於北京郵電大學計算機科學與技術專業,現就職于思科系統中國公司高級服務部門。他具備多年的網路監控管理系統的開發經驗。
石琳,思科系統(中國)信息技術服務有限公司網路諮詢工程師,具有多年python開發經驗,當前從事SDN方面的技術工作。
目錄
第1 章 面向對象設計 ...................................................................................................... 1
面向對象 ............................................................................................................................. 1
對象和類 ............................................................................................................................. 3
指定屬性和行為 ................................................................................................................. 5
數據描述對象 ............................... ..................................................................................... 5
行為是動作 ............................................................................... .......................................... 7
隱藏細節並且創建公共接口 .............................................................................................. 8
組合和繼承 ......................................................................................................................... 10
繼承 ..................................................................................................................................... 12
案例學習 ............................................................................................................................. 15
練習 ..................................................................................................................................... 22
總結 ..................................................................................................................................... 23
第2 章 Python 對象 ...................................................................................................... .. 24
創建Python 類 ................................................................................................................... 24
添加屬性 ............................................................................................................................. 26
讓類實際做一些事情 ..................................................................................................... ... 26
對象的初始化 ..................................................................................................................... 29
解釋你自己 ......................................................................................................................... 32
模組和包 ............................................................................................................................. 34
組織模組 ............................................................................................................................. 36
誰可以訪問我的數據 ......................................................................................................... 41
案例學習 .......................................................................................................................... 43
練習 .................................................................................................................................. 52
總結 .................................................................................................................................. 53
第3 章 當對象是相似的 ............................................................................................... 54
基本繼承 .......................................................................................................................... 54
擴展內置類 ...................................................................................................................... 56
重寫和Super ..................................................................................................................... 58
多重繼承 .......................................................................................................................... 59
鑽石的問題 ...................................................................................................................... 61
不同的參數集合 .............................................................................................................. 66
多態 .................................................................................................................................. 68
案例學習 .......................................................................................................................... 71
練習 .................................................................................................................................. 84
總結 .................................................................................................................................. 85
第4 章 異常處理 ........................................................................................................... 86
拋出異常 .......................................................................................................................... 86
拋出一個異常 .................................................................................................................. 88
當一個異常產生時發生了什麼 ...................................................................................... 90
異常處理 .......................................................................................................................... 91
異常層級 .......................................................................................................................... 97
定義自己的異常 .............................................................................................................. 98
異常不是例外 .................................................................................................................. 99
案例學習 ......................................................................................................................... 102
練習 ................................................................................................................................. 112
總結 ................................................................................................................................. 113
第5 章 何時使用面向對象編程 .................................................................................. 114
把對象當作“對象”來對待 .......................................................................................... 114
使用property 為類中的數據添加行為 ......................................................................... 118
property 是怎樣工作的 .................................................................................................. 121
裝飾器:創建property 的另一種方法 ..........................................................................123
何時該使用property 屬性 ..............................................................................................125
管理對象 ........................................................................................................................... 127
移除重複的代碼 ................................................................................................................130
實踐一下 ........................................................................................................................... 131
或者我們可以使用組合 ....................................................................................................135
案例學習 ........................................................................................................................... 137
練習 ................................................................................................................................... 145
總結 ................................................................................................................................... 146
第6 章 Python 數據結構 ............................................................................................... 147
空對象 ............................................................................................................................... 147
元組和命名元組 ............................................................................................................... 148
命名元組 ........................................................................................................................... 150
字典 ................................................................................................................................... 152
何時應該使用字典 ........................................................................................................... 155
使用defaultdict ................................................................................................................. 156
列表 .................................................................................................................................. 157
對列表排序 ...................................................................................................................... 160
集合 .................................................................................................................................. 162
擴展內置數據類型 .......................................................................................................... 166
案例學習 .......................................................................................................................... 171
練習 .................................................................................................................................. 178
總結 .................................................................................................................................. 178
第7 章 Python 裡面向對象的捷徑 ...................................................................... 180
Python 內置函式 ............................................................................................................. 180
Len ...................................................................................................................................... 180
Reversed ............................................................................................................................. 181
Enumerate .......................................................................................................................... 182
Zip ....................................................................................................................................... 183
其他函式 ........................................................................................................................... 185
解析 ................................................................................................................................... 186
列表解析 ........................................................................................................................... 186
集合和字典解析 ............................................................................................................... 188
生成器表達式 ................................................................................................................... 189
生成器 ............................................................................................................................... 191
方法重載的另一種選擇 ................................................................................................... 194
默認參數 ........................................................................................................................... 195
可變參數列表 ................................................................................................................... 197
參數拆分 ........................................................................................................................... 201
函式也是對象 ................................................................................................................... 202
使用函式作為屬性 ........................................................................................................... 206
可調用對象 ....................................................................................................................... 207
案例學習 ........................................................................................................................... 208
練習 ................................................................................................................................... 212
總結 ................................................................................................................................... 213
第8 章 設計模式1 .......................................................................................................... 214
設計模式 ........................................................................................................................... 214
裝飾器模式 ....................................................................................................................... 215
裝飾器實例 ....................................................................................................................... 216
Python 中的裝飾器模式 ................................................................................................. 219
觀察者模式 ...................................................................................................................... 221
觀察者實例 ...................................................................................................................... 222
策略模式 .......................................................................................................................... 224
策略實例 .......................................................................................................................... 225
Python 中的策略模式 .....................................................................................................226
狀態模式 .......................................................................................................................... 227
狀態實例 .......................................................................................................................... 227
狀態和策略模式的對比 ...................................................................................................233
單件模式 .......................................................................................................................... 234
單件的實現方式 ..............................................................................................................234
模組變數能夠模仿單件 ..................................................................................................235
模板模式 ......................................................................................................................... 238
模板實例 ......................................................................................................................... 238
練習 ................................................................................................................................. 242
總結 ................................................................................................................................. 243
第9 章 設計模式2 ........................................................................................................ 244
適配器模式 ..................................................................................................................... 244
外觀模式 ......................................................................................................................... 247
享元模式 ......................................................................................................................... 250
命令模式 ......................................................................................................................... 254
抽象工廠模式 ................................................................................................................. 259
組合模式 ......................................................................................................................... 263
練習 ................................................................................................................................. 267
總結 ................................................................................................................................. 268
第10 章 檔案和字元串 ................................................................................................ 270
字元串 ............................................................................................................................. 270
字元串操作 ..................................................................................................................... 271
字元串格式化 ................................................................................................................. 274
字元串是Unicode 的 .................................................................................................... 281
可變位元組字元串 ............................................................................................................ 285
檔案I/O ........................................................................................................................... 286
把它放在上下文 ............................................................................................................ 287
偽造檔案 ....................................................................................................................... 289
存儲對象 ....................................................................................................................... 290
定製pickle ...................................................................................................................... 292
序列化Web 對象 ......................................................................................................... 294
練習 ............................................................................................................................... 297
總結 ............................................................................................................................... 299
第11 章 測試面向對象的程式 .................................................................................. 300
為什麼要測試 ............................................................................................................... 300
測試驅動開發 ............................................................................................................... 302
單元測試 ....................................................................................................................... 303
斷言方法 ....................................................................................................................... 304
減少樣板和清理 ........................................................................................................... 306
組織和運行測試 ........................................................................................................... 308
忽略失敗的測試 ........................................................................................................... 309
用py.test 測試 ............................................................................................................. 311
一個處理安裝和清理的方法 ....................................................................................... 313
一種完全不同的變數設定方式 ................................................................................... 316
用py.test 跳過測試 ..................................................................................................... 320
py.test 的補充 .............................................................................................................. 321
多少測試才算夠 .......................................................................................................... 323
案例學習 ...................................................................................................................... 326
實現它 ....................................................................................................................... 327
練習 .......................................................................................................................... 332
總結 .......................................................................................................................... 333
第12 章 常用Python 3 庫 .................................................................................... 334
資料庫訪問 .............................................................................................................. 335
引入SQLAlchemy ...................................................................................................... 336
漂亮的用戶界面 ...................................................................................................... 340
TkInter ........................................................................................................................ 341
PyQt ........................................................................................................................... 345
選擇一個GUI 工具包 ............................................................................................. 347
XML ............................................................................................................................ 348
ElementTree ............................................................................................................... 349
Lxml ........................................................................................................................... 353
CherryPy .................................................................................................................... 354
一個完整的Web 堆疊 ........................................................................................... 357
練習 ......................................................................................................................... 363
總結 ......................................................................................................................... 364