-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

Python面向對象編程指南

( 簡體 字)
作者:[美] Steven F. Lott 洛特類別:1. -> 程式設計 -> Python
譯者:
出版社:人民郵電出版社Python面向對象編程指南 3dWoo書號: 43689
詢問書籍請說出此書號!

缺書
NT售價: 395

出版日:3/1/2016
頁數:433
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
加入購物車 加到我的最愛
(請先登入會員)
ISBN:9787115405586
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

內容簡介:

  Python是一種面向對象、解釋型的程序設計語言,它已經被成功應用于科學計算、數據分析以及游戲開發等諸多領域。
本書深入介紹Python語言的面向對象特性,全書分3個部分共18章。第1部分講述用特殊方法實現Python風格的類,分別介紹了__init__()方法、與Python無縫集成—基本特殊方法、屬性訪問和特性及修飾符、抽象基類設計的一致性、可調用對象和上下文的使用、創建容器和集合、創建數值類型、裝飾器和mixin—橫切方面;第2部分講述持久化和序列化,分別介紹了序列化和保存、用Shelve保存和獲取對象、用SQLite保存和獲取對象、傳輸和共享對象、配置文件和持久化;第3部分講述測試、調試、部署和維護,分別介紹了Logging和Warning模塊、可測試性的設計、使用命令行、模塊和包的設計、質量和文檔。
本書深入剖析Python,幫助讀者全面掌握Python并構建出更好的應用程序,非常適合對Python語言有一定了解并想要深入學習Python的讀者,也適合有一定開發經驗并且想要嘗試使用Python語言進行編程的IT從業人員。
目錄:

第1部分 用特殊方法實現Python風格的類 ........ 1
第1章 __init__()方法 ............ 5
1.1 隱式的基類——object ........... 5
1.2 基類中的__init__()方法 .......... 6
1.3 在基類中實現__init__()方法 .......... 7
1.4 使用__init__()方法創建常量清單 ......... 8
1.5 通過工廠函數調用__init__() .......... 9
1.5.1 錯誤的工廠設計和模糊的else語句 ........ 10
1.5.2 使用elif簡化設計來獲得一致性 ........ 11
1.5.3 使用映射和類來簡化設計 .......... 11
1.6 在每個子類中實現__init__()方法 ........ 14
1.7 簡單的組合對象 ........... 16
1.7.1 封裝集合類 ........... 16
1.7.2 擴展集合類 ........... 17
1.7.3 可適應更多需求的另一種設計 ........ 17
1.8 復合的組合對象 ........... 18
1.9 不帶__init__()方法的無狀態對象 ........ 19
1.10 一些其他的類定義 ........... 20
1.11 多策略的__init__()方法.......... 22
1.11.1 更復雜的初始化方式 .......... 23
1.11.2 靜態函數的初始化 .......... 24
1.12 更多的__init__()技術 .......... 24
1.12.1 帶有類型驗證的初始化 .......... 26
1.12.2 初始化、封裝和私有化 .......... 28
1.13 總結 ............. 29
2 目錄
第2章 與Python無縫集成——基本特殊方法 ........ 30
2.1 __repr__()和__str__()方法.......... 30
2.1.1 非集合對象的__str__()和__repr__() ........ 31
2.1.2 集合中的__str__()和__repr__() ........ 32
2.2 __format__()方法 ........... 33
2.2.1 內嵌格式規范........... 34
2.2.2 集合和委托格式規范 .......... 35
2.3 __hash__()方法 ........... 35
2.3.1 決定哈希的對象 ........... 36
2.3.2 有關不可變對象和繼承的默認行為 ........ 37
2.3.3 重載不可變對象 ........... 39
2.3.4 重載可變對象........... 40
2.3.5 從可變的Hand類中生成一個不可變的Hand類 ...... 41
2.4 __bool__()方法 ........... 43
2.5 __bytes__()方法 ........... 44
2.6 比較運算符方法 ........... 45
2.6.1 設計比較運算........... 47
2.6.2 實現同一個類的對象比較 .......... 48
2.6.3 實現不同類的對象比較 .......... 49
2.6.4 硬總和、軟總和及多態 .......... 50
2.6.5 不同類比較的例子 .......... 51
2.7 __del__()方法 ............ 53
2.7.1 引用計數和對象銷毀 .......... 54
2.7.2 循環引用和垃圾回收 .......... 55
2.7.3 循環引用和weakref模塊 .......... 56
2.7.4 __del__()和close()方法 .......... 58
2.8 __new__()方法和不可變對象 .......... 58
2.9 __new__()方法和元類型 .......... 59
2.9.1 元類型示例1——有序的屬性 ........ 60
2.9.2 元類型示例2——自引用 .......... 61
2.10 總結 ............. 64
第3章 屬性訪問、特性和修飾符 .......... 66
3.1 屬性的基本操作 ........... 66
3.2 創建特性 ............ 68
3.2.1 主動計算特性........... 70
3.2.2 setter和deleter特性 .......... 71
目錄 3
3.3 使用特殊方法完成屬性訪問 .......... 72
3.3.1 使用__slots__創建不可變對象 ........ 73
3.3.2 使用tuple子類創建不可變對象 ........ 74
3.3.3 主動計算的屬性 ........... 75
3.4 __getattribute__()方法 .......... 77
3.5 創建修飾符 ............ 78
3.5.1 使用非數據修飾符 .......... 80
3.5.2 使用數據修飾符 ........... 81
3.6 總結、設計要素和折中方案 .......... 83
3.6.1 特性與屬性對比 ........... 83
3.6.2 修飾符的設計........... 84
3.6.3 展望 ............ 84
第4章 抽象基類設計的一致性 .......... 85
4.1 抽象基類 ............ 85
4.2 基類和多態 ............ 87
4.3 可調用對象 ............ 88
4.4 容器和集合 ............ 88
4.5 數值類型 ............ 89
4.6 其他的一些抽象基類 ........... 90
4.6.1 迭代器的抽象基類 .......... 90
4.6.2 上下文和上下文管理器 .......... 91
4.7 abc模塊 ............ 92
4.8 總結、設計要素和折中方案 .......... 93
第5章 可調用對象和上下文的使用 .......... 95
5.1 使用ABC可調用對象來進行設計 ........ 95
5.2 提高性能 ............ 97
5.3 使用functools完成記憶化 .......... 99
5.4 可調用API和復雜性 .......... 100
5.5 管理上下文和with語句 .......... 102
5.5.1 使用小數上下文 .......... 103
5.5.2 其他上下文 ........... 104
5.6 定義__enter__()和__exit__()方法 ........ 104
5.7 上下文管理器工廠 ........... 105
5.8 總結 ............. 107
5.8.1 可調用對象的設計要素和折中方案 ........ 108
5.8.2 上下文管理器的設計要素和折中方案 ....... 108
4 目錄
5.8.3 展望 ............ 109
第6章 創建容器和集合 ........... 110
6.1 集合的抽象基類 ........... 110
6.2 特殊方法示例 ........... 111
6.3 使用標準庫的擴展 ........... 112
6.3.1 namedtuple()函數 .......... 112
6.3.2 deque類 ............ 114
6.3.3 使用ChainMap ........... 115
6.3.4 OrderedDict集合 .......... 116
6.3.5 defaultdict子類 ........... 118
6.3.6 counter集合........... 119
6.4 創建新集合 ............ 120
6.5 定義一種新的序列 ........... 121
6.5.1 一個用于統計的list .......... 122
6.5.2 主動計算和延遲計算 .......... 122
6.5.3 使用__getitem__()、__setitem__()、__delitem__()和slice操作 .... 125
6.5.4 實現__getitem__()、__setitem__()和__delitem__() ...... 126
6.5.5 封裝list和委托 ........... 127
6.5.6 用__iter__()創建迭代器 .......... 129
6.6 創建一種新的映射 ........... 129
6.7 創建一種新的集合 ........... 131
6.7.1 一些設計原則........... 132
6.7.2 定義Tree類 ........... 132
6.7.3 定義TreeNode類 .......... 133
6.7.4 演示二叉樹集合 .......... 136
6.8 總結 ............. 136
6.8.1 設計要素和折中方案 .......... 137
6.8.2 展望 ............ 138
第7章 創建數值類型 ........... 139
7.1 numbers的抽象基類 .......... 139
7.1.1 決定使用哪種類型 .......... 141
7.1.2 方法解析和運算符映射 .......... 141
7.2 算術運算符的特殊方法 .......... 142
7.3 創建一個數字類 ........... 144
7.3.1 FixedPoint的初始化 .......... 144
7.3.2 定義固定小數點位數的二進制算術運算符 ....... 146
目錄 5
7.3.3 定義FixedPoint一元算術運算符 ........ 148
7.3.4 實現FixedPoint反向運算符 ........ 148
7.3.5 實現FixedPoint比較運算符 ........ 150
7.4 計算一個數字的哈希值 .......... 152
7.5 實現其他的特殊方法 .......... 153
7.6 原地運算符的優化 ........... 154
7.7 總結 ............. 155
7.7.1 設計要素和折中方案 .......... 155
7.7.2 展望 ............ 155
第8章 裝飾器和mixin——橫切方面 ......... 156
8.1 類和描述 ............ 156
8.1.1 創建函數 ........... 157
8.1.2 創建類 ............ 158
8.1.3 一些類設計原則 .......... 159
8.1.4 面向方面編程........... 159
8.2 使用內置的裝飾器 ........... 160
8.3 使用標準庫中的mixin類 .......... 161
8.3.1 使用上下文管理器的mixin類 ........ 162
8.3.2 禁用類的一個功能 .......... 163
8.4 寫一個簡單的函數裝飾器 .......... 164
8.5 帶參數的裝飾器 ........... 166
8.6 創建方法函數裝飾器 .......... 167
8.7 創建類裝飾器 ........... 169
8.8 向類中添加方法函數 .......... 170
8.9 將裝飾器用于安全性 .......... 172
8.10 總結 ............ 173
8.10.1 設計要素和折中方案 .......... 173
8.10.2 展望 ............ 174
第2部分 持久化和序列化 ........... 175
第9章 序列化和保存——JSON、YAML、Pickle、CSV和XML .... 178
9.1 持久化、類、狀態以及數據表示 ........ 179
9.2 文件系統和網絡的考慮 .......... 180
9.3 定義用于持久化的類 .......... 181
9.4 使用JSON進行轉儲和加載.......... 184
9.4.1 在類中支持JSON .......... 185
6 目錄
9.4.2 自定義JSON編碼 .......... 186
9.4.3 自定義JSON解碼 .......... 188
9.4.4 安全性和eval() ........... 189
9.4.5 重構編碼函數........... 189
9.4.6 日期字符串的標準化 .......... 190
9.4.7 將JSON寫入文件 .......... 191
9.5 使用YAML進行轉儲和加載 ......... 192
9.5.1 YAML文件的格式化 .......... 193
9.5.2 擴展YAML的表示 .......... 194
9.5.3 安全性與安全加載 .......... 196
9.6 使用pickle進行轉儲和加載......... 196
9.6.1 針對可靠的pickle處理進行類設計 ........ 197
9.6.2 安全性和全局性問題 .......... 199
9.7 轉儲和加載CSV ........... 200
9.7.1 將簡單的序列轉儲為CSV ......... 200
9.7.2 從CSV文件中加載簡單的序列 ........ 201
9.7.3 處理集合與復雜的類 .......... 202
9.7.4 在一個CSV文件中轉儲并從多類型的行中加載數據 ..... 203
9.7.5 使用迭代器篩選CSV中的行 ........ 204
9.7.6 從CSV文件中轉儲和加載連接的行 ........ 205
9.8 使用XML轉儲和加載 .......... 207
9.8.1 使用字符串模板轉儲對象 ......... 208
9.8.2 使用xml.etree.ElementTree轉儲對象 ........ 209
9.8.3 加載XML文檔 ........... 210
9.9 總結 ............. 211
9.9.1 設計要素和折中方案 .......... 211
9.9.2 模式演化 ........... 212
9.9.3 展望 ............ 213
第10章 用Shelve保存和獲取對象 .......... 214
10.1 分析持久化對象用例 .......... 215
10.2 創建shelf............ 216
10.3 設計適于存儲的對象 .......... 217
10.3.1 為我們的對象設計鍵 .......... 217
10.3.2 為對象生成代理鍵 .......... 218
10.3.3 設計一個帶有簡單鍵的類 ......... 218
10.3.4 為容器和集合設計類 .......... 220
10.3.5 用外鍵引用對象 .......... 220
目錄 7
10.3.6 為復雜對象設計CRUD操作 ........ 222
10.4 搜索、掃描和查詢 ........... 223
10.5 為shelve設計數據訪問層 .......... 224
10.6 用索引提高性能 ........... 227
10.7 有關更多的索引維護工作 .......... 230
10.8 用writeback代替更新索引 .......... 232
10.9 總結 ............ 233
10.9.1 設計要素和折中方案 .......... 233
10.9.2 應用軟件層........... 234
10.9.3 展望 ............ 234
第11章 用SQLite保存和獲取對象 .......... 235
11.1 SQL數據庫、持久化和對象 ......... 235
11.1.1 SQL數據模型—行和表 ........ 236
11.1.2 使用SQL的DML語句完成CRUD ........ 238
11.1.3 使用SQL中SELECT語句執行查詢 ....... 240
11.1.4 SQL事務和ACID屬性 ......... 240
11.1.5 設計數據庫中的主鍵和外鍵 ........ 242
11.2 使用SQL處理程序中的數據......... 243
11.3 從Python對象到SQLite BLOB列的映射 ....... 245
11.4 手動完成從Python對象到數據庫中行的映射 ...... 247
11.4.1 為SQLite設計一個訪問層 ........ 248
11.4.2 實現容器的關系 .......... 251
11.5 使用索引提高性能 ........... 252
11.6 添加ORM層 ........... 252
11.6.1 設計ORM友好的類 .......... 253
11.6.2 使用ORM層創建模型 .......... 255
11.6.3 使用ORM層操作對象 .......... 256
11.7 通過指定標簽字符串查詢文章對象 ........ 258
11.8 通過創建索引提高性能.......... 259
11.9 總結 ............ 261
11.9.1 設計要素和折中方案 .......... 261
11.9.2 映射的方法 ........... 261
11.9.3 鍵和鍵的設計 ........... 262
11.9.4 應用軟件層 ........... 262
11.9.5 展望 ............ 262
8 目錄
第12章 傳輸和共享對象 ........... 263
12.1 類、狀態和表示 ........... 263
12.2 用HTTP和REST傳輸對象 ......... 264
12.2.1 用REST實現CRUD操作 ........ 264
12.2.2 實現非CRUD操作 .......... 265
12.2.3 REST協議和ACID .......... 266
12.2.4 選擇一種表示方法—JSON、XML或者YAML ...... 266
12.3 實現一個REST服務器——WSGI和mod_wsgi ...... 267
12.3.1 創建簡單的REST應用程序和服務器 ....... 267
12.3.2 實現REST客戶端 .......... 270
12.3.3 演示RESTful服務并創建單元測試 ........ 271
12.4 使用可回調類創建WSGI應用程序 ........ 272
12.4.1 設計RESTful對象標識符 ........ 274
12.4.2 多層REST服務 .......... 275
12.4.3 創建roulette服務器 .......... 279
12.4.4 創建roulette客戶端 .......... 280
12.5 創建安全的REST服務 .......... 281
12.6 用Web應用程序框架實現REST ........ 284
12.7 用消息隊列傳輸對象 .......... 285
12.7.1 定義進程 ........... 286
12.7.2 創建隊列和提供數據 .......... 287
12.8 總結 ............ 289
12.8.1 設計要素和折中方案 .......... 289
12.8.2 模式演變 ........... 289
12.8.3 應用程序軟件層次 .......... 290
12.8.4 展望 ............ 290
第13章 配置文件和持久化 ........... 291
13.1 配置文件的使用場景 .......... 291
13.2 表示、持久化、狀態和可用性 ........ 293
13.2.1 應用程序配置的設計模式 ......... 293
13.2.2 使用對象的構造完成配置 ......... 294
13.2.3 實現具有層次結構的配置 ......... 295
13.3 使用INI文件保存配置 .......... 296
13.4 使用eval()完成更多的文字處理 ........ 299
13.5 使用PY文件存儲配置 .......... 299
13.5.1 使用類定義進行配置 .......... 300
目錄 9
13.5.2 通過SimpleNamespace進行配置 ........ 301
13.5.3 在配置中使用Python的exec() ........ 304
13.6 為什么執行exec()沒有問題 ......... 305
13.7 為默認值和重寫使用鏈映射 ......... 306
13.8 使用JSON或YAML文件存儲配置 ........ 307
13.8.1 使用壓平的JSON配置 .......... 309
13.8.2 加載YAML配置 .......... 310
13.9 使用特性文件存儲配置 .......... 311
13.9.1 解析特性文件........... 312
13.9.2 使用特性文件........... 314
13.10 使用XML文件——PLIST以及其他格式保存配置 ...... 315
13.11 總結 ............ 318
13.11.1 設計要素和折中方案 .......... 318
13.11.2 創建共享配置 .......... 319
13.11.3 模式演化 ........... 319
13.11.4 展望 ............ 319
第3部分 測試、調試、部署和維護 .......... 321
第14章 Logging和Warning模塊 .......... 324
14.1 創建基本日志 ........... 324
14.1.1 創建共享的類級記錄器 .......... 325
14.1.2 配置日志記錄器 .......... 326
14.1.3 開始和關閉日志記錄系統 ......... 326
14.1.4 使用命名的日志記錄器 .......... 328
14.1.5 擴展日志等級........... 329
14.1.6 定義指向多個目標輸出的handler ........ 329
14.1.7 管理傳播規則........... 331
14.2 理解配置 ............ 332
14.3 為控制、調試、審計和安全創建專門的日志 ....... 332
14.3.1 創建調試日志........... 334
14.3.2 創建審計和安全日志 .......... 335
14.4 使用warnings模塊 .......... 337
14.4.1 用警告信息顯示API變化 ........ 337
14.4.2 用警告信息顯示配置問題 ......... 338
14.4.3 用警告信息顯示可能存在的軟件問題 ....... 339
14.5 高級日志——最后一些信息和網絡目標地址 ....... 340
14.5.1 創建自動的tail緩沖區 .......... 340
10 目錄
14.5.2 發送日志消息到遠程的進程 ........ 342
14.5.3 防止隊列溢出........... 345
14.6 總結 ............ 346
14.6.1 設計要素和折中方案 .......... 346
14.6.2 展望 ............ 347
第15章 可測試性的設計 ........... 348
15.1 為測試定義并隔離單元 .......... 348
15.1.1 最小化依賴........... 349
15.1.2 創建簡單的單元測試 .......... 351
15.1.3 創建一個測試組件 .......... 352
15.1.4 包含邊界值測試 .......... 353
15.1.5 為測試模仿依賴 .......... 354
15.1.6 為更多的行為使用更多的模仿對象 ........ 357
15.2 使用doctest來定義測試用例 ......... 357
15.2.1 將doctest與unittest相結合 ........ 360
15.2.2 創建一個更完整的測試包 ......... 360
15.3 使用安裝和卸載 ........... 361
15.3.1 使用OS資源進行安裝和卸載 ........ 362
15.3.2 結合數據庫進行安裝和卸載 ........ 363
15.4 TestCase的類層次結構 .......... 366
15.5 使用外部定義的期望結果 .......... 367
15.6 自動化集成和性能測試 .......... 370
15.7 總結 ............ 371
15.7.1 設計要素和折中方案 .......... 372
15.7.2 展望 ............ 372
第16章 使用命令行 ............ 373
16.1 操作系統接口和命令行 .......... 373
16.2 用argparse解析命令行 .......... 375
16.2.1 簡單的on/off選項 .......... 376
16.2.2 帶參數選項........... 377
16.2.3 位置參數 ........... 377
16.2.4 所有其他參數........... 377
16.2.5 --version的顯示和退出 .......... 378
16.2.6 --help的顯示和退出 .......... 378
16.3 集成命令行選項和環境變量 ......... 378
16.3.1 提供更多的可配置默認值 ......... 379
目錄 11
16.3.2 用環境變量覆蓋配置文件設置 ........ 380
16.3.3 用配置文件覆蓋環境變量 ......... 381
16.3.4 讓配置文件理解None .......... 381
16.4 自定義幫助文檔的輸出 .......... 382
16.5 創建頂層main()函數 .......... 383
16.5.1 確保配置遵循DRY原則 ......... 385
16.5.2 管理嵌套的配置上下文 .......... 385
16.6 大規模程序設計 ........... 386
16.6.1 設計命令類........... 386
16.6.2 添加用于分析的命令子類 ......... 388
16.6.3 向應用程序中添加更多的功能 ........ 389
16.6.4 設計更高級的復合命令 .......... 389
16.7 其他的復合命令設計模式 .......... 391
16.8 與其他應用程序集成 .......... 392
16.9 總結 ............ 392
16.9.1 設計要素和折中方案 .......... 393
16.9.2 展望 ............ 393
第17章 模塊和包的設計 ........... 394
17.1 設計一個模塊 ........... 394
17.1.1 一些模塊設計的方法 .......... 395
17.1.2 模塊和類 ........... 396
17.1.3 模塊中應該包含的內容 .......... 397
17.2 全局模塊和模塊項 ........... 398
17.3 包的設計 ............ 399
17.3.1 包與模塊的混合設計 .......... 400
17.3.2 使用多種實現進行包的設計 ........ 401
17.4 主腳本和__main__模塊的設計 ........ 402
17.4.1 創建可執行腳本文件 .......... 402
17.4.2 創建__main__模塊 .......... 403
17.4.3 大規模編程........... 403
17.5 設計長時間運行的應用 .......... 404
17.6 使用src、bin和test來組織代碼 ........ 406
17.7 安裝Python模塊 ........... 407
17.8 總結 ............ 408
17.8.1 設計要素和折中方案 .......... 408
17.8.2 展望 ............ 408
12 目錄
第18章 質量和文檔 ............ 409
18.1 為help()函數編寫docstrings ......... 409
18.2 用pydoc編寫文檔 ........... 410
18.3 通過RST標記提供更好的輸出 ........ 411
18.3.1 文本塊 ............ 412
18.3.2 RST內聯標記 ........... 413
18.3.3 RST指令 ........... 414
18.3.4 學習RST ........... 415
18.4 編寫有效的文檔字符串 .......... 415
18.5 編寫文件級別的文檔字符串——包括模塊和包 ...... 416
18.5.1 用RST標記編寫詳細的API文檔 ........ 417
18.5.2 編寫類和方法函數的文檔字符串 ........ 419
18.5.3 編寫函數文檔字符串 .......... 420
18.6 更復雜的標記技術 ........... 420
18.7 用Sphinx生成文檔 .......... 421
18.7.1 使用Sphinx的快速啟動 ......... 421
18.7.2 編寫Sphinx文檔 .......... 423
18.7.3 在文檔中加入4+1視圖 ......... 424
18.7.4 編寫實現文檔........... 425
18.7.5 用Sphinx創建交叉引用 ......... 426
18.7.6 將Sphinx文件重構為目錄 ........ 427
18.8 編寫文檔 ............ 427
18.9 大綱式編程 ............ 428
18.9.1 大綱式編程用例 .......... 428
18.9.2 使用大綱式編程工具 .......... 429
18.10 總結 ............ 432
序: