-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
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 3 面向對象編程(第2版)

( 簡體 字)
作者:孫雨生類別:1. -> 程式設計 -> Python
譯者:
出版社:電子工業出版社Python 3 面向對象編程(第2版) 3dWoo書號: 49347
詢問書籍請說出此書號!

缺書
NT售價: 495

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

譯者序:

前言:

譯者序

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_property(self):
property_type = get_valid_input(
"What type of property? ",
("house", "apartment")).lower()
payment_type = get_valid_input(
"What payment type? ",
("purchase", "rental")).lower()
當我們想要讓你特別關注代碼塊中的特定部分時,相關的行或項將會加粗顯示:
def add_property(self):
property_type = get_valid_input(
"What type of property? ",
("house", "apartment")).lower()
payment_type = get_valid_input(
"What payment type? ",
("purchase", "rental")).lower()
任何命令行的輸入或輸出都將會被設定為如下格式:
>>> c1 = Contact("John A", "johna@example.net")
>>> c2 = Contact("John B", "johnb@example.net")
>>> c3 = Contact("Jenna C", "jennac@example.net")
>>> [c.name for c in Contact.all_contacts.search(’John’)]
[’John A’, ’John B’]
新的術語或重要單詞將會以黑體呈現。你在屏幕、菜單或對話框中看到的單詞,將會以這種形式出現:“將出現參數不夠的錯誤,和我們前面忘記self參數一樣。”
讀者反饋
歡迎讀者反饋意見。讓我們知道你是如何看待本書的——有什么是你喜歡或不喜歡的。讀者反饋對我們非常重要,因為可以幫助我們開發對你們更有用的內容。
可以通過feedback@packtpub.com發送一般性的反饋,只要在郵件主題中提及本書書名即可。
如果有哪個你擅長的領域,你想要寫作或貢獻一本書,請訪問www.packtpub. com/authors查看我們的作者指南。
客戶支持
現在你已經是Packt尊貴的讀者了,我們提供如下一些資源可以幫助你收獲更多。
下載示例代碼
你可以從http://www.packtpub.com上你的賬戶中下載所有你購買的Packt出版的書籍中的示例代碼。如果你從別處購買了本書,你可以訪問http://www.packtpub. com/support并注冊,然后直接通過郵件獲取這些文件。
勘誤
盡管我們已經盡可能保證內容的準確性,但仍然難以避免存在錯誤。如果你在我們的書中發現了錯誤——不管是文字錯誤還是代碼錯誤——如果你能夠告訴我們,我們將會非常感激。這樣一來,你也可以幫助其他讀者避免很多困惑,并且幫助我們在后續版本中不斷改進。如果你發現任何錯誤,請訪問http://www.packtpub.com/submit-errata,選擇對應的書,單擊勘誤提交表鏈接,并輸入詳細的錯誤信息。一旦確認了你的勘誤,你提交的內容將會被接受,這一勘誤信息將會上傳到我們的網站,或者添加到對應書籍的勘誤章節列表中。
訪問https://www.packtpub.com/books/content/support并在搜索框中輸入書名,可以查看之前提交的勘誤。所需的信息將會出現在勘誤章節中。
版權
流傳于互聯網上的內容,版權是所有媒體正在面臨的問題。在Packt,我們嚴格保護版權與許可。如果你在網上看到任何關于我們書籍的非法副本,請立即向我們提供地址或網站名,我們將進行追蹤維權。
請通過copyright@packtpub.com向我們提供可疑盜版材料的鏈接。
感謝你幫助我們保護我們的作者以及我們向你提供有價值內容的能力。
問題
如果對本書有任何問題,你可以通過與我們取得聯系,我們將會傾盡全力幫你解決。
內容簡介:

本書主要介紹如何使用Python 3進行面向對象編程。1~4章介紹面向對象這一編程范式的基本準則,以及Python是如何運用這些準則實現面向對象編程的;第5~8章,介紹如何利用Python中的內置函數快速、簡單地實現面向對象編程;第9~11章介紹了許多面向對象編程中常用的設計模式,以及如何使用符合 Python 語言習慣的方式來實現這些設計模式;最后第12、13章介紹了Python 3中并發編程相關的主題。本書中每一章都會包含一節案例學習的內容,通過一個實踐相關的案例將本章介紹的主要內容以及前面章節中介紹過的內容串聯起來。除此之外,每一章最后的練習旨在指導你利用本章學習到的內容,使用面向對象編程改善以往項目中的代碼,并進一步掌握如何在合適的時機使用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
序: