SlideShare a Scribd company logo
1 of 110
Download to read offline
PPyytthhoonn 
PPrrooggrraammmmiinngg 
Johnson Hsu 
johnsonhsu@dsrt.biz
2 
@ 
大綱 
 Chapter 7 類別 
 Chapter 8 例外處理 
 Chapter 9 常用模組介紹
3 
@ 
Chapter 7 類別
4 
@ 
類別
 基本格式 
 類別內建屬性 
 建構元 
 方法 
 成員 
 類別變數 
 實例變數 
 實例變數內建屬性
5 
@ 
類別 –– 基本格式
class <classname>: 
“””document…. 
……………………””” 
statement…. 
class <classname>[(class,class…class)] 
“””document……. 
………………………..””” 
statement
6 
@ 
類別內建屬性
 格式: classname.內建屬性 
 __dict__:將內建屬性以Dictionary格式儲存 
 __doc__:取得class內所撰寫的說明文字 
 __name__:取得class自己的名稱 
 __module__:取得class來自哪個模組 
 __bases__:取得class繼承自哪些模組
7 
@ 
類別內建屬性 -- ____ddiicctt____ 
 將內建屬性以Dictionary格式儲存
8 
@ 
類別內建屬性 -- ____ddoocc____ 
 __doc__:取得class內所撰寫的說明文字
9 
@ 
類別內建屬性 -- ____nnaammee____ 
 __name__:取得class自己的名稱
10 
@ 
類別內建屬性
 __module__:取得class來自哪個模組
11 
@ 
類別內建屬性
 __bases__:取得class繼承自哪些模組
12 
@ 
建構元
 建構一個物件並賦予其屬性的方法 
 Overload __init__ method
13 
@ 
方法
 即函式
14 
@ 
成員
15 
@ 
類別變數
 透過類別直接存取 
 宣告在方法外
16 
@ 
實例變數
 格式: obj = class(arg1, arg2, arg3…argN)
17 
@ 
實例變數內建屬性
 格式: instance.內建屬性 
 __dict__:將instance內的屬性以Dict格式儲存 
 __class__:取得instance的所屬類別
18 
@ 
類別內建屬性 -- ____ddiicctt____ 
 將內建屬性以Dictionary格式儲存
19 
@ 
iinnssttaannccee..mmeetthhoodd((aarrgg11,, ……))如何運作
 Instance.method(arg..)  Class.method(instance, arg..)
20 
@ 
iinnssttaannccee..mmeetthhoodd((aarrgg11,, ……))如何運作
21 
@ 
類別方法的OOvveerrllooaaddiinngg 
 重寫類別內原來的方法 
 擴充類別內原來的方法
22 
@ 
類別方法的OOvveerrllooaaddiinngg 
 重寫類別內原來的方法
23 
@ 
類別方法的OOvveerrllooaaddiinngg 
 擴充類別內原來的方法
24 
@ 
類別的繼承
 多重繼承 
 多重繼承的順序 
 指定繼承哪個類別的方法
25 
@ 
類別的繼承 -- 多重繼承
 格式 class class_name(class1, 
class2….classN):
26 
@ 
類別的繼承 -- 多重繼承的順序
 如果繼承的集合成員,擁有相同方法,則該類別 
繼承類別方法的順序從左至右
27 
@ 
類別的繼承 -- 指定繼承哪個類別的
方法
 指定繼承哪個類別的方法
28 
@ 
類別的多型
 並沒有真正的多型 
 借由不訂引數判定該呼叫的函式達成
29 
@ 
類別的多型
30 
@ 
類別的封裝
 Python內所有的屬性與方法都是public 
 命名時以 ‘ _’ (一個底線)作為開頭, 被視為類 
別的內部 
屬性、方法 
 命名時以’ __’(兩個底線)作為開頭, 被視為類別 
的私有 
屬性、方法
31 
@ 
類別的封裝
32 
@ 
類別的名稱空間
 類別的所有屬性都儲存在該類別的名稱空間 
 若於類別內儲存一個全域變數的值, 當全域變數 
改變, 
類別將不會跟著改變
33 
@ 
類別變數與成員在實例變數的搜尋順
序
34 
@ 
類別變數與成員在實例變數的搜尋順
序 
Module Not Found
35 
@ 
類別變數與成員在實例變數的搜尋順
序 
Module Not Found
36 
@ 
類別變數與成員在實例變數的搜尋順
序 
1 
2
37 
@ 
類別內建方法
 __init__(self) 
 __str__(self) 
 __repr__(self) 
 __getattr__(self, name) 
 __setattr__(self, name, value) 
 __delattr__(self, name) 
 __del__(self) 
 __cmp__(self, other) 
 __hash__(self) 
 __nonzero__(self)
38 
@ 
類別內建方法
 __call__(self) 
 __getitem__(self, index) 
 __len__(self) 
 __add__(self, other) 
 __iadd__(self, other) 
 __sub__(self, other) 
 __isub__(self, other) 
 __mul__(self, other) 
 __imul__(self, other) 
 __div__(self, other) 
 __idiv__(self, other)
39 
@ 
類別內建方法
 __mod__(self, other) 
 __imod__(self, other) 
 __neg__(self) 
 __pos__(slef) 
 __abs__(self) 
 __inv__(self) 
 __Ishift__(self, other) 
 __iIshift__(self, other) 
 __rshift__(self, other) 
 __irshift__(self, other)
40 
@ 
類別內建方法
 __and__(self, other) 
 __isand__(self, other) 
 __or__(self, other) 
 __ior__(self, other) 
 __xor__(self, other) 
 __ixor__(self, other) 
 __not__(self, other) 
 __setitem__(self, index, value) 
 __delitem__(self,index) 
 __getslice__(self, index1, index2)
41 
@ 
類別內建方法
 __setslice__(self, index1, index2, list) 
 __delslice__(self, index1, index2)
42 
@ 
類別內建方法 -- ____iinniitt____((sseellff)) 
 類別建構元 
 可以利用不定引述的寫法,完成不同參數的建構 
元
43 
@ 
類別內建方法 -- ____ssttrr____((sseellff)) 
 設定當物件被指定為字串時,應該回傳的字串
44 
@ 
類別內建方法 -- ____ggeettaattttrr____((sseellff,, 
nnaammee))
45 
@ 
類別內建方法 –– 
____sseettaattttrr____((sseellff,, 
nnaammee,, vvaalluuee))
46 
@ 
類別內建方法 -- ____ddeellaattttrr____((sseellff,, 
nnaammee))
47 
@ 
類別內建方法 -- ____ddeell____((sseellff))
48 
@ 
類別內建方法 -- ____ddeell____((sseellff))
49 
@ 
類別內建方法 -- ____ccaallll____((sseellff))
50 
@ 
類別內建方法 -- ____ccaallll____((sseellff))
51 
@ 
類別內建方法 –– 
sseettiitteemm、
gg ee__ttiistteeetimmtem、__(ddseeellfl,ii ttienedmmex, value) 
 __getitem__(self,index) 
 __delitem__(self,index) 
類似 __setattr__、__getattr__、delattr,但其格 
式為 
__setitem__: A[‘key’] = c 
__getitem__: A[‘key’] 
__delitem__: del A[‘key’]
52 
@ 
類別內建方法 –– 
____ggeettsslliiccee____((sseellff,, iinnddeexx11,, 
iinn Sddtree =xx 2‘2a))bcdefg’ Str = Str[2:5] 
index1 index2
53 
@ 
類別內建方法 –– 
____sseettsslliiccee____((sseellff,, iinnddeexx11,, iinnddeexx22,, lliisstt))
54 
@ 
類別內建方法 –– 
____ddeellsslliiccee____((sseellff,, iinnddeexx11,, 
iinnddeexx22))
55 
@ 
Chapter 8 例外處理
56 
@ 
例外處理 –– 基本格式
try: 
statement…. 
statement… 
except: [excetion type[, instance of exception]]: 
statement… 
[else: 
statement…] 
[finally: 
statement…]
57 
@ 
例外處理
58 
@ 
例外處理
59 
@ 
例外處理
60 
@ 
例外處理 –– 例外實例變數的aarrggss屬
性 
Tuple
61 
@ 
例外處理 –– 忽略例外
62 
@ 
例外處理 –– 產生例外
格式: 
   1) raise class 
2) raise exception, single_arg 
3) raise exception, (arg1, arg2, arg3…) 
4) raise exception (arg1, arg2, ….)
63 
@ 
例外處理 –– 產生例外
64 
@ 
例外處理 –– 自訂例外
65 
@ 
例外處理 –– 自訂例外
66 
@ 
Chapter 9 常用模組介紹
67 
@ 
SSttrriinngg模組 –– 尋找字串的位置
68 
@ 
SSttrriinngg模組 –– 搜尋並取代字串
69 
@ 
SSttrriinngg模組 –– 刪除換行字元
70 
@ 
SSttrriinngg模組 –– 英文字母2266個常數
71 
@ 
SSttrriinngg模組 –– 將字串轉為小寫
72 
@ 
SSttrriinngg模組 –– 指定分隔字元拆解此
字串
73 
@ 
SSttrriinngg模組 –– sspplliitt預設分隔字元為
空白
74 
@ 
SSttrriinngg模組 –– 將lliisstt內的集合組成字
串 
並且指定
分隔字元
75 
@ 
SSttrriinngg模組 –– 將lliisstt內的集合組成字
串
76 
@ 
SSttrriinngg模組 –– 另一種取代方式
77 
@ 
SSttrriinngg模組 –– 轉型
78 
@ 
ssyyss模組 –– 系統相關資訊
79 
@ 
ssyyss模組 –– 模組的搜尋路徑
80 
@ 
ssyyss模組 –– 新增搜尋環境到目前環境
中
81 
@ 
ssyyss模組 –– 取得目前載入的模組
82 
@ 
ssyyss模組 –– 取得執行時的參數
83 
@ 
ssyyss模組 –– 將輸入參數存成ddiicctt物
件
84 
@ 
ooss模組 –– 取得程式於系統的
pprroocceessss iidd
85 
@ 
ooss模組 –– 取得目前路徑、切換目錄
86 
@ 
ooss模組 –– 路徑之間分隔字元、目錄的
分隔字元、上層目錄、目前目錄、換行
字元
87 
@ 
ooss模組 –– 判斷是否為資料夾、檔案
、取得檔案大小、判斷是否存在
88 
@ 
ooss模組 –– 分離檔案名稱與路徑並儲
存成ttuuppllee
89 
@ 
ooss模組 –– 組合路徑與檔案
90 
@ 
ooss模組 –– 各別取出檔案路徑與檔案
名稱
91 
@ 
ooss模組 –– 取得副檔名
92 
@ 
ooss模組 –– 取得絕對路徑
93 
@ 
ooss模組 –– 執行系統sshheellll指令
94 
@ 
ooss模組 –– 取得環境變數
95 
@ 
ooss模組 –– 將路徑隔別取出來
96 
@ 
ooss模組 –– 取得指定路徑的檔案、資
料夾
97 
@ 
ooss模組 –– 取得目錄下所有檔案與資
料夾
98 
@ 
ooss模組 ––取得目錄下所有檔案與資料
夾
99 
@ 
ooss模組 ––取得目錄下所有檔案與資料
夾
100 
@ 
ooss模組 ––取得目錄下所有檔案與資料
夾
101 
@ 
SSoocckkeett模組 –– TTCCPP 範例
 建立socket到指定的本地主機ip, port位置 
 設定最大連線數 
 無限回圈, 接受連線 
 傳送字串給連線端 
 關閉socket
102 
@ 
SSoocckkeett模組 –– UUDDPP 範例
 建立socket到指定的本地主機ip, port位置 
 設定接收訊息的資料量大小 
 取得資料, 與連線端位置
103 
@ 
uurrlllliibb模組 –– 取得hheeaaddeerrss 
 開啟指定網頁位置 
 讀入整個網頁 
 利用該物件取得header
104 
@ 
uurrlllliibb模組 –– 特殊字串編碼
 將字串傳入quote函式
105 
@ 
uurrlllliibb模組 –– 特殊字串編碼
 將字串傳入quote函式,將對於URL而言屬於特 
殊字 
元的部分進行編碼
106 
@ 
uurrlllliibb模組 –– 反解編碼過後的字串
 將重新編碼過後的字串利用unquote解回字串原 
貌
107 
@ 
uurrllppaarrssee模組 –– 解析UURRLL 
 透過urlparse將傳入的URL字串,分解成 
addressing scheme、netword location 、path 、 
parameters 、query 、fragment identifier
108 
@ 
uurrllppaarrssee模組 –– 反解析UURRLL 
 將要組成的元素以tuple方式儲存 
 呼叫urlunparse反組成一個完整URL
109 
@ 
TTeellnneett模組
 開啟連線 
 登入 
 執行命令
110 
@ 
FTTPP模組
 開啟連線 
 登入 
 執行命令

More Related Content

What's hot

Hibernate查询
Hibernate查询Hibernate查询
Hibernate查询llying
 
Row Set初步学习V1.1
Row Set初步学习V1.1Row Set初步学习V1.1
Row Set初步学习V1.1Zianed Hou
 
Jni攻略之八――操作对象的构造方法
Jni攻略之八――操作对象的构造方法Jni攻略之八――操作对象的构造方法
Jni攻略之八――操作对象的构造方法yiditushe
 
W06 資料聚類:分群 (blog)
W06 資料聚類:分群 (blog)W06 資料聚類:分群 (blog)
W06 資料聚類:分群 (blog)Yung-Ting Chen
 
CH17:反射與類別載入器
CH17:反射與類別載入器CH17:反射與類別載入器
CH17:反射與類別載入器Justin Lin
 
My sql explain & select
My sql explain & selectMy sql explain & select
My sql explain & selectMing-Ying Wu
 
由一个简单的程序谈起――之五(精华)
由一个简单的程序谈起――之五(精华)由一个简单的程序谈起――之五(精华)
由一个简单的程序谈起――之五(精华)yiditushe
 
Java SE 7 技術手冊投影片第 11 章 - 執行緒與並行API
Java SE 7 技術手冊投影片第 11 章 - 執行緒與並行APIJava SE 7 技術手冊投影片第 11 章 - 執行緒與並行API
Java SE 7 技術手冊投影片第 11 章 - 執行緒與並行APIJustin Lin
 

What's hot (10)

Hibernate查询
Hibernate查询Hibernate查询
Hibernate查询
 
Row Set初步学习V1.1
Row Set初步学习V1.1Row Set初步学习V1.1
Row Set初步学习V1.1
 
Jni攻略之八――操作对象的构造方法
Jni攻略之八――操作对象的构造方法Jni攻略之八――操作对象的构造方法
Jni攻略之八――操作对象的构造方法
 
W06 資料聚類:分群 (blog)
W06 資料聚類:分群 (blog)W06 資料聚類:分群 (blog)
W06 資料聚類:分群 (blog)
 
進階主題
進階主題進階主題
進階主題
 
CH17:反射與類別載入器
CH17:反射與類別載入器CH17:反射與類別載入器
CH17:反射與類別載入器
 
My sql explain & select
My sql explain & selectMy sql explain & select
My sql explain & select
 
Sas 1208
Sas 1208Sas 1208
Sas 1208
 
由一个简单的程序谈起――之五(精华)
由一个简单的程序谈起――之五(精华)由一个简单的程序谈起――之五(精华)
由一个简单的程序谈起――之五(精华)
 
Java SE 7 技術手冊投影片第 11 章 - 執行緒與並行API
Java SE 7 技術手冊投影片第 11 章 - 執行緒與並行APIJava SE 7 技術手冊投影片第 11 章 - 執行緒與並行API
Java SE 7 技術手冊投影片第 11 章 - 執行緒與並行API
 

Similar to Programming python - part 2

從模組到類別
從模組到類別從模組到類別
從模組到類別Justin Lin
 
Programming python - part 1
Programming python - part 1Programming python - part 1
Programming python - part 1Che-Cheng Hsu
 
5. 從模組到類別
5. 從模組到類別5. 從模組到類別
5. 從模組到類別Justin Lin
 
從模組到類別
從模組到類別從模組到類別
從模組到類別Justin Lin
 
Backbone js and requirejs
Backbone js and requirejsBackbone js and requirejs
Backbone js and requirejsChi-wen Sun
 
Moodle 项目帮助手册:程序编写准则
Moodle 项目帮助手册:程序编写准则Moodle 项目帮助手册:程序编写准则
Moodle 项目帮助手册:程序编写准则YUCHENG HU
 
Django development
Django developmentDjango development
Django developmentloveyudu
 
I Love Joomla! 佈景製作教學 0212
I Love Joomla! 佈景製作教學 0212I Love Joomla! 佈景製作教學 0212
I Love Joomla! 佈景製作教學 0212Asika Simon
 
Sklearn basic - v01
Sklearn   basic - v01Sklearn   basic - v01
Sklearn basic - v01ssuser5e7722
 
3 hibernate映射元素和类型
3 hibernate映射元素和类型3 hibernate映射元素和类型
3 hibernate映射元素和类型Zelin Wang
 
107个常用javascript语句 oss 计算技术 - ossez info of tech
107个常用javascript语句   oss 计算技术 - ossez info of tech107个常用javascript语句   oss 计算技术 - ossez info of tech
107个常用javascript语句 oss 计算技术 - ossez info of techYUCHENG HU
 
02 Objective-C
02 Objective-C02 Objective-C
02 Objective-CTom Fan
 
Lucene2 4 Demo
Lucene2 4 DemoLucene2 4 Demo
Lucene2 4 Demoyiditushe
 
Spring入门纲要
Spring入门纲要Spring入门纲要
Spring入门纲要yiditushe
 
[圣思园][Java SE]Java se lesson 3
[圣思园][Java SE]Java se lesson 3[圣思园][Java SE]Java se lesson 3
[圣思园][Java SE]Java se lesson 3ArBing Xie
 

Similar to Programming python - part 2 (20)

從模組到類別
從模組到類別從模組到類別
從模組到類別
 
進階主題
進階主題進階主題
進階主題
 
Programming python - part 1
Programming python - part 1Programming python - part 1
Programming python - part 1
 
Python 爬蟲實戰
Python 爬蟲實戰Python 爬蟲實戰
Python 爬蟲實戰
 
5. 從模組到類別
5. 從模組到類別5. 從模組到類別
5. 從模組到類別
 
從模組到類別
從模組到類別從模組到類別
從模組到類別
 
Backbone js and requirejs
Backbone js and requirejsBackbone js and requirejs
Backbone js and requirejs
 
Moodle 项目帮助手册:程序编写准则
Moodle 项目帮助手册:程序编写准则Moodle 项目帮助手册:程序编写准则
Moodle 项目帮助手册:程序编写准则
 
Django development
Django developmentDjango development
Django development
 
Python系列4
Python系列4Python系列4
Python系列4
 
I Love Joomla! 佈景製作教學 0212
I Love Joomla! 佈景製作教學 0212I Love Joomla! 佈景製作教學 0212
I Love Joomla! 佈景製作教學 0212
 
Sklearn basic - v01
Sklearn   basic - v01Sklearn   basic - v01
Sklearn basic - v01
 
3 hibernate映射元素和类型
3 hibernate映射元素和类型3 hibernate映射元素和类型
3 hibernate映射元素和类型
 
Java annotation
Java annotationJava annotation
Java annotation
 
107个常用javascript语句 oss 计算技术 - ossez info of tech
107个常用javascript语句   oss 计算技术 - ossez info of tech107个常用javascript语句   oss 计算技术 - ossez info of tech
107个常用javascript语句 oss 计算技术 - ossez info of tech
 
02 Objective-C
02 Objective-C02 Objective-C
02 Objective-C
 
Lucene2 4 Demo
Lucene2 4 DemoLucene2 4 Demo
Lucene2 4 Demo
 
Spring入门纲要
Spring入门纲要Spring入门纲要
Spring入门纲要
 
[圣思园][Java SE]Java se lesson 3
[圣思园][Java SE]Java se lesson 3[圣思园][Java SE]Java se lesson 3
[圣思园][Java SE]Java se lesson 3
 
[系列活動] Python 爬蟲實戰
[系列活動] Python 爬蟲實戰[系列活動] Python 爬蟲實戰
[系列活動] Python 爬蟲實戰
 

Programming python - part 2