Submit Search
Upload
從模組到類別
•
Download as PPTX, PDF
•
0 likes
•
503 views
Justin Lin
Follow
深入模組管理 初識物件導向 學習定義類別 定義運算子
Read less
Read more
Technology
Report
Share
Report
Share
1 of 63
Download now
Recommended
資料永續與交換
資料永續與交換
Justin Lin
使用 pickle 與 shelve 認識 DB-API 2.0 使用 sqlite3 模組 處理 CSV、JSON、XML
物件封裝
物件封裝
Justin Lin
瞭解封裝觀念與實現 定義類別、建構式與方法 使用方法重載與不定長度引數 瞭解static成員
5. 從模組到類別
5. 從模組到類別
Justin Lin
深入模組管理 初識物件導向 學習定義類別 定義運算子
11. DOM、事件與樣式
11. DOM、事件與樣式
Justin Lin
認識DOM操作 處理事件 掌握樣式 建立程式庫封裝細節
5. 建構式、原型與類別
5. 建構式、原型與類別
Justin Lin
認識建構式之作用 理解原型鏈機制 區別原型與類別典範 善用類別語法
進階主題
進階主題
Justin Lin
運用描述器 實作裝飾器 定義 meta 類別 使用相對匯入 泛型進階
10. 進入瀏覽器
10. 進入瀏覽器
Justin Lin
script標籤基本特性 認識async與defer 初探同源策略與CORS 認識ES6前的模組管理 使用ECMAScript模組
14. 進階主題
14. 進階主題
Justin Lin
運用描述器 實作裝飾器 定義 meta 類別 使用相對匯入 泛型進階
Recommended
資料永續與交換
資料永續與交換
Justin Lin
使用 pickle 與 shelve 認識 DB-API 2.0 使用 sqlite3 模組 處理 CSV、JSON、XML
物件封裝
物件封裝
Justin Lin
瞭解封裝觀念與實現 定義類別、建構式與方法 使用方法重載與不定長度引數 瞭解static成員
5. 從模組到類別
5. 從模組到類別
Justin Lin
深入模組管理 初識物件導向 學習定義類別 定義運算子
11. DOM、事件與樣式
11. DOM、事件與樣式
Justin Lin
認識DOM操作 處理事件 掌握樣式 建立程式庫封裝細節
5. 建構式、原型與類別
5. 建構式、原型與類別
Justin Lin
認識建構式之作用 理解原型鏈機制 區別原型與類別典範 善用類別語法
進階主題
進階主題
Justin Lin
運用描述器 實作裝飾器 定義 meta 類別 使用相對匯入 泛型進階
10. 進入瀏覽器
10. 進入瀏覽器
Justin Lin
script標籤基本特性 認識async與defer 初探同源策略與CORS 認識ES6前的模組管理 使用ECMAScript模組
14. 進階主題
14. 進階主題
Justin Lin
運用描述器 實作裝飾器 定義 meta 類別 使用相對匯入 泛型進階
反射與類別載入器
反射與類別載入器
Justin Lin
取得.class檔案資訊 動態生成物件與操作方法 認識模組與反射的權限設定 瞭解JDK9類別載入器階層 使用ClassLoader實例
9. meta-programming
9. meta-programming
Justin Lin
探索物件特性 判斷物件型態 認識Reflect API 結合Proxy與Reflect API
10. 資料永續與交換
10. 資料永續與交換
Justin Lin
使用 pickle 與 shelve 認識 DB-API 2.0 使用 sqlite3 模組 處理 CSV、JSON、XML
從模組到類別
從模組到類別
Justin Lin
《Python 3.5 技術手冊》第 5 章投影片
流程語法與函式
流程語法與函式
Justin Lin
認識基本流程語法 使用 for Comprehension 認識函式與變數範圍 運用一級函式特性 使用 yield 建立產生器 初探型態提示
認識物件
認識物件
Justin Lin
區分基本型態與類別型態 瞭解物件與參考的關係 從包裹器認識物件 以物件觀點看待陣列 認識字串的特性
4. 使用物件
4. 使用物件
Justin Lin
掌握this參考 運用物件實字 認識物件協定 使用符號協定
進階主題
進階主題
Justin Lin
《Python 3.5 技術手冊》第 14 章投影片
Java SE 8 技術手冊第 5 章 - 物件封裝
Java SE 8 技術手冊第 5 章 - 物件封裝
Justin Lin
瞭解封裝觀念與實現 定義類別、建構式與方法 使用方法重載與不定長度引數 瞭解static成員
2. 型態、變數與運算子
2. 型態、變數與運算子
Justin Lin
使用REPL 認識內建型態 使用 let、const、var 宣告變數 掌握型態轉換
9. 資料結構
9. 資料結構
Justin Lin
認識 hashable、iterable、orderable 對物件進行排序 認識群集架構 運用 collections 模組 運用 collections.abc 模組
Java SE 7 技術手冊投影片第 11 章 - 執行緒與並行API
Java SE 7 技術手冊投影片第 11 章 - 執行緒與並行API
Justin Lin
Java SE 7 技術手冊
型態與運算子
型態與運算子
Justin Lin
《Python 3.5 技術手冊》第 3 章投影片
CH04:認識物件
CH04:認識物件
Justin Lin
區分基本型態與類別型態 瞭解物件與參考的關係 從包裹器認識物件 以物件觀點看待陣列 認識字串的特性 知道如何查詢API文件
CH09:Collection與Map
CH09:Collection與Map
Justin Lin
認識Collection與Map架構 使用Collection與Map實作 對收集之物件進行排序 簡介Lambda表示式 簡介泛型語法
Java SE 8 技術手冊第 11 章 - 執行緒與並行API
Java SE 8 技術手冊第 11 章 - 執行緒與並行API
Justin Lin
認識Thread與Runnable 使用synchronized 使用wait()、notify()、notifyAll() 運用高階並行API
Java SE 8 技術手冊第 4 章 - 認識物件
Java SE 8 技術手冊第 4 章 - 認識物件
Justin Lin
區分基本型態與類別型態 瞭解物件與參考的關係 從包裹器認識物件 以物件觀點看待陣列 認識字串的特性
Java SE 7 技術手冊投影片第 15 章 - 反射器與類別載入器
Java SE 7 技術手冊投影片第 15 章 - 反射器與類別載入器
Justin Lin
Java SE 7 技術手冊
Java SE 7 技術手冊投影片第 10 章 - 輸入輸出
Java SE 7 技術手冊投影片第 10 章 - 輸入輸出
Justin Lin
Java SE 7 技術手冊
CH10:輸入輸出
CH10:輸入輸出
Justin Lin
瞭解串流與輸入輸出 認識InputStream、OutputStream繼承架構 認識Reader、Writer繼承架構 使用輸入輸出裝飾器
Chapter 4 models
Chapter 4 models
Ekman Hsieh
Django讀書會
Programming python - part 2
Programming python - part 2
Che-Cheng Hsu
part 2 la!
More Related Content
What's hot
反射與類別載入器
反射與類別載入器
Justin Lin
取得.class檔案資訊 動態生成物件與操作方法 認識模組與反射的權限設定 瞭解JDK9類別載入器階層 使用ClassLoader實例
9. meta-programming
9. meta-programming
Justin Lin
探索物件特性 判斷物件型態 認識Reflect API 結合Proxy與Reflect API
10. 資料永續與交換
10. 資料永續與交換
Justin Lin
使用 pickle 與 shelve 認識 DB-API 2.0 使用 sqlite3 模組 處理 CSV、JSON、XML
從模組到類別
從模組到類別
Justin Lin
《Python 3.5 技術手冊》第 5 章投影片
流程語法與函式
流程語法與函式
Justin Lin
認識基本流程語法 使用 for Comprehension 認識函式與變數範圍 運用一級函式特性 使用 yield 建立產生器 初探型態提示
認識物件
認識物件
Justin Lin
區分基本型態與類別型態 瞭解物件與參考的關係 從包裹器認識物件 以物件觀點看待陣列 認識字串的特性
4. 使用物件
4. 使用物件
Justin Lin
掌握this參考 運用物件實字 認識物件協定 使用符號協定
進階主題
進階主題
Justin Lin
《Python 3.5 技術手冊》第 14 章投影片
Java SE 8 技術手冊第 5 章 - 物件封裝
Java SE 8 技術手冊第 5 章 - 物件封裝
Justin Lin
瞭解封裝觀念與實現 定義類別、建構式與方法 使用方法重載與不定長度引數 瞭解static成員
2. 型態、變數與運算子
2. 型態、變數與運算子
Justin Lin
使用REPL 認識內建型態 使用 let、const、var 宣告變數 掌握型態轉換
9. 資料結構
9. 資料結構
Justin Lin
認識 hashable、iterable、orderable 對物件進行排序 認識群集架構 運用 collections 模組 運用 collections.abc 模組
Java SE 7 技術手冊投影片第 11 章 - 執行緒與並行API
Java SE 7 技術手冊投影片第 11 章 - 執行緒與並行API
Justin Lin
Java SE 7 技術手冊
型態與運算子
型態與運算子
Justin Lin
《Python 3.5 技術手冊》第 3 章投影片
CH04:認識物件
CH04:認識物件
Justin Lin
區分基本型態與類別型態 瞭解物件與參考的關係 從包裹器認識物件 以物件觀點看待陣列 認識字串的特性 知道如何查詢API文件
CH09:Collection與Map
CH09:Collection與Map
Justin Lin
認識Collection與Map架構 使用Collection與Map實作 對收集之物件進行排序 簡介Lambda表示式 簡介泛型語法
Java SE 8 技術手冊第 11 章 - 執行緒與並行API
Java SE 8 技術手冊第 11 章 - 執行緒與並行API
Justin Lin
認識Thread與Runnable 使用synchronized 使用wait()、notify()、notifyAll() 運用高階並行API
Java SE 8 技術手冊第 4 章 - 認識物件
Java SE 8 技術手冊第 4 章 - 認識物件
Justin Lin
區分基本型態與類別型態 瞭解物件與參考的關係 從包裹器認識物件 以物件觀點看待陣列 認識字串的特性
Java SE 7 技術手冊投影片第 15 章 - 反射器與類別載入器
Java SE 7 技術手冊投影片第 15 章 - 反射器與類別載入器
Justin Lin
Java SE 7 技術手冊
Java SE 7 技術手冊投影片第 10 章 - 輸入輸出
Java SE 7 技術手冊投影片第 10 章 - 輸入輸出
Justin Lin
Java SE 7 技術手冊
CH10:輸入輸出
CH10:輸入輸出
Justin Lin
瞭解串流與輸入輸出 認識InputStream、OutputStream繼承架構 認識Reader、Writer繼承架構 使用輸入輸出裝飾器
What's hot
(20)
反射與類別載入器
反射與類別載入器
9. meta-programming
9. meta-programming
10. 資料永續與交換
10. 資料永續與交換
從模組到類別
從模組到類別
流程語法與函式
流程語法與函式
認識物件
認識物件
4. 使用物件
4. 使用物件
進階主題
進階主題
Java SE 8 技術手冊第 5 章 - 物件封裝
Java SE 8 技術手冊第 5 章 - 物件封裝
2. 型態、變數與運算子
2. 型態、變數與運算子
9. 資料結構
9. 資料結構
Java SE 7 技術手冊投影片第 11 章 - 執行緒與並行API
Java SE 7 技術手冊投影片第 11 章 - 執行緒與並行API
型態與運算子
型態與運算子
CH04:認識物件
CH04:認識物件
CH09:Collection與Map
CH09:Collection與Map
Java SE 8 技術手冊第 11 章 - 執行緒與並行API
Java SE 8 技術手冊第 11 章 - 執行緒與並行API
Java SE 8 技術手冊第 4 章 - 認識物件
Java SE 8 技術手冊第 4 章 - 認識物件
Java SE 7 技術手冊投影片第 15 章 - 反射器與類別載入器
Java SE 7 技術手冊投影片第 15 章 - 反射器與類別載入器
Java SE 7 技術手冊投影片第 10 章 - 輸入輸出
Java SE 7 技術手冊投影片第 10 章 - 輸入輸出
CH10:輸入輸出
CH10:輸入輸出
Similar to 從模組到類別
Chapter 4 models
Chapter 4 models
Ekman Hsieh
Django讀書會
Programming python - part 2
Programming python - part 2
Che-Cheng Hsu
part 2 la!
Django development
Django development
loveyudu
flagboot learning framework technology sharing
flagboot learning framework technology sharing
xastraxastra
flagboot learning framework technology sharing
Python面向对象开发基础篇
Python面向对象开发基础篇
modou li
[圣思园][Java SE]Io 1
[圣思园][Java SE]Io 1
ArBing Xie
Java SE 7 技術手冊投影片第 05 章 - 物件封裝
Java SE 7 技術手冊投影片第 05 章 - 物件封裝
Justin Lin
Java SE 7 技術手冊
[圣思园][Java SE]Reflection
[圣思园][Java SE]Reflection
ArBing Xie
Java SE 7 技術手冊投影片第 04 章 - 認識物件
Java SE 7 技術手冊投影片第 04 章 - 認識物件
Justin Lin
Java SE 7 技術手冊
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練2
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練2
Duran Hsieh
2016逢甲大學資訊工程系 .Net C# MVC 教學 with ina lai
Introduction the Repository Pattern
Introduction the Repository Pattern
Bill Lin
ASP.NET MVC with Repository Pattern
Python系列3
Python系列3
數真 蔡
知識是可貴的,而您的回饋與收穫會讓這份資料更具價值。 --- 健康照護領域資料分析基礎能力研習 本投影片擷取此次研習之Python 系列講座,若有任何問題或疏誤,請來信告知,謝謝。
Servlet & JSP 教學手冊第二版 - 第 7 章:使用 JSTL
Servlet & JSP 教學手冊第二版 - 第 7 章:使用 JSTL
Justin Lin
Servlet & JSP 教學手冊第二版
第10章 Python计算生态.pptx
第10章 Python计算生态.pptx
edvardarcher
python learning
改善 Angular 開發流程:你所不知道的 Schematics 程式碼產生器
改善 Angular 開發流程:你所不知道的 Schematics 程式碼產生器
Chieh Kai Yang
Angular CLI 團隊所開發的 Schematics 工具,讓 Angular 在開發上多了無限的可能性,目前已經有許多的套件都將 schematics 視為標準的操作流程,透過 schematics 來減少程式碼初始化的時間。那企業該如何透過 Schematics 來幫助團隊更有效的開發系統呢,透過本次的分享,能讓大家更能瞭解 Schematics 的奧妙之處
2, object oriented programming
2, object oriented programming
ted-xu
What is OOP? a basic intro
Eloquent ORM
Eloquent ORM
Shengyou Fan
在 2015 年 7 月至新北市樹林國小舉辦 Laravel 工作坊,讓參與的學員在 30 個小時內學會使用 Laravel 建置一個具 Open ID 認證功能的網路應用程式。
Refactoring with Patterns in PHP
Refactoring with Patterns in PHP
Jace Ju
從實例瞭解如何用模式來實現重構
Study research in April
Study research in April
AlbertChenKkchuchu
Eloquent ORM
Eloquent ORM
Shengyou Fan
在 2015 年 5 月,我們與臺中科大資工系合作,舉辦 Laravel 工作坊,讓參與的學員在 20 個小時內學會使用 Laravel 建置一個簡易的 Blog 系統。
Similar to 從模組到類別
(20)
Chapter 4 models
Chapter 4 models
Programming python - part 2
Programming python - part 2
Django development
Django development
flagboot learning framework technology sharing
flagboot learning framework technology sharing
Python面向对象开发基础篇
Python面向对象开发基础篇
[圣思园][Java SE]Io 1
[圣思园][Java SE]Io 1
Java SE 7 技術手冊投影片第 05 章 - 物件封裝
Java SE 7 技術手冊投影片第 05 章 - 物件封裝
[圣思园][Java SE]Reflection
[圣思园][Java SE]Reflection
Java SE 7 技術手冊投影片第 04 章 - 認識物件
Java SE 7 技術手冊投影片第 04 章 - 認識物件
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練2
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練2
Introduction the Repository Pattern
Introduction the Repository Pattern
Python系列3
Python系列3
Servlet & JSP 教學手冊第二版 - 第 7 章:使用 JSTL
Servlet & JSP 教學手冊第二版 - 第 7 章:使用 JSTL
第10章 Python计算生态.pptx
第10章 Python计算生态.pptx
改善 Angular 開發流程:你所不知道的 Schematics 程式碼產生器
改善 Angular 開發流程:你所不知道的 Schematics 程式碼產生器
2, object oriented programming
2, object oriented programming
Eloquent ORM
Eloquent ORM
Refactoring with Patterns in PHP
Refactoring with Patterns in PHP
Study research in April
Study research in April
Eloquent ORM
Eloquent ORM
More from Justin Lin
Ch14 簡介 Spring Boot
Ch14 簡介 Spring Boot
Justin Lin
認識 Spring Boot 認識 Spring Tool Suite 遷移微網誌至 Spring Boot
Ch13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/Security
Justin Lin
區別程式庫與框架 逐步善用 Spring MVC 簡介 Thymeleaf 模版 使用 Spring Security
Ch12 Spring 起步走
Ch12 Spring 起步走
Justin Lin
使用 Gradle 結合 Gradle 與 IDE 認識相依注入 使用 Spring 核心
Ch11 簡介 JavaMail
Ch11 簡介 JavaMail
Justin Lin
寄送純文字郵件 寄送 HTML 郵件 寄送附檔郵件
Ch10 Web 容器安全管理
Ch10 Web 容器安全管理
Justin Lin
了解 Java EE 安全概念與名詞 使用容器基本驗證與表單驗 使用 HTTPS 保密資料傳輸
Ch09 整合資料庫
Ch09 整合資料庫
Justin Lin
了解 JDBC 架構 使用基本的 JDBC 透過 JNDI 取得DataSource 在 Web 應用程式整合資料庫
Ch08 自訂標籤
Ch08 自訂標籤
Justin Lin
使用 Tag File 自訂標籤 使用 Simple Tag 自訂標籤 使用 Tag 自訂標籤
Ch07 使用 JSTL
Ch07 使用 JSTL
Justin Lin
了解何謂 JSTL 使用 JSTL 核心標籤庫 使用 JSTL 格式標籤庫 使用 JSTL XML 標籤庫 使用 JSTL 函式標籤庫
Ch06 使用 JSP
Ch06 使用 JSP
Justin Lin
了解 JSP 生命週期 使用 JSP 語法元素 使用 JSP 標準標籤 使用運算式語言(EL) 自訂 EL 函式
Ch05 Servlet 進階 API、過濾器與傾聽器
Ch05 Servlet 進階 API、過濾器與傾聽器
Justin Lin
了解 Servlet 生命週期 使用 ServletConfig 與ServletContext 使用 PushBuilder 各種傾聽器的使用 繼承 HttpFilter 實作過濾器
Ch04 會話管理
Ch04 會話管理
Justin Lin
了解會話管理基本原理 使用 Cookie 類別 使用 HttpSession 會話管理 了解容器會話管理原理
Ch03 請求與回應
Ch03 請求與回應
Justin Lin
取得請求參數與標頭 處理中文字元請求與回應 設定與取得請求範圍屬性 使用轉發、包含、重新導向
Ch02 撰寫與設定 Servlet
Ch02 撰寫與設定 Servlet
Justin Lin
開發環境準備與使用 了解 Web 應用程式架構 Servlet 撰寫與部署設定 了解 URI 模式對應 使用 web-fragement.xml
CH1. 簡介 Web 應用程式
CH1. 簡介 Web 應用程式
Justin Lin
認識 HTTP 基本特性 了解何為 URI 編碼 認識 Web 容器角色 了解 Servlet 與 JSP 的關係 認識 MVC/Model 2
13.並行、平行與非同步
13.並行、平行與非同步
Justin Lin
認識並行、平行與非同步 使用 threading 模組 使用 multiprocessing 模組 使用 concurrent.futures模組 運用 async、await 與 asyncio
12. 除錯、測試與效能
12. 除錯、測試與效能
Justin Lin
使用 pdb 模組除錯 對程式進行單元測試 使用 timeit 評測程式片段 使用 cProfile(profile)察看評測數據
11. 常用內建模組
11. 常用內建模組
Justin Lin
處理日期與時間 認識日誌的使用 運用規則表示式 管理檔案與目錄 URL 處理
8. open() 與 io 模組
8. open() 與 io 模組
Justin Lin
使用 open()函式 使用 stdin、stdout、stderr 認識檔案描述器 認識 io 模組
7. 例外處理
7. 例外處理
Justin Lin
使用 try、except 處理例外 認識例外繼承架構 認識 raise 使用時機 運用 finally 清除資源 使用 with as 管理資源
6. 類別的繼承
6. 類別的繼承
Justin Lin
瞭解繼承目的 認識鴨子定型 重新定義方法 認識 object 建立、尋找文件資源 泛型入門
More from Justin Lin
(20)
Ch14 簡介 Spring Boot
Ch14 簡介 Spring Boot
Ch13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/Security
Ch12 Spring 起步走
Ch12 Spring 起步走
Ch11 簡介 JavaMail
Ch11 簡介 JavaMail
Ch10 Web 容器安全管理
Ch10 Web 容器安全管理
Ch09 整合資料庫
Ch09 整合資料庫
Ch08 自訂標籤
Ch08 自訂標籤
Ch07 使用 JSTL
Ch07 使用 JSTL
Ch06 使用 JSP
Ch06 使用 JSP
Ch05 Servlet 進階 API、過濾器與傾聽器
Ch05 Servlet 進階 API、過濾器與傾聽器
Ch04 會話管理
Ch04 會話管理
Ch03 請求與回應
Ch03 請求與回應
Ch02 撰寫與設定 Servlet
Ch02 撰寫與設定 Servlet
CH1. 簡介 Web 應用程式
CH1. 簡介 Web 應用程式
13.並行、平行與非同步
13.並行、平行與非同步
12. 除錯、測試與效能
12. 除錯、測試與效能
11. 常用內建模組
11. 常用內建模組
8. open() 與 io 模組
8. open() 與 io 模組
7. 例外處理
7. 例外處理
6. 類別的繼承
6. 類別的繼承
從模組到類別
1.
2.
5. 從模組到類別 • 學習目標 –
深入模組管理 – 初識物件導向 – 學習定義類別 – 定義運算子 2
3.
架構程式 • 抽象層的封裝與隔離 • 物件的狀態 •
名稱空間 • 資源實體組織方式 3
4.
用模組建立抽象層 • 一個 .py
檔案就是一個模組 • 模組成為 Python 中最自然的抽象層 4
5.
• 想要知道一個模組中有哪些名稱,可以使 用 dir()
函式 5
6.
• import 某個模組,指定的
.py 檔案載入 • python 直譯器會為它建立一個 module 實例,並建立一個模組名稱來參考它 6
7.
• 銀行商務相關的簡單程式 7
8.
• 透過 bank
模組名稱來進行相關的商務流程 8
9.
• from import
會將被匯入模組中之名稱參 考的值,指定給目前模組中建立的新名稱 9
10.
• 如果有些變數,並不想被 from
import * 建立同名變數,可以用底線作為開頭 • 例如,若 foo.py 中有以下內容: 10
11.
• 定義 __all__
清單,使用字串列出可被 from import * 的名稱: 11
12.
• 若模組定義了__all__ 變數,名單中的變 數,才可以被其他模組
from import * 12
13.
• 無論是底線開頭,或者是未被列入 __all__ 清單的名稱,只是限制不被 from
import * • 若使用者 import foo,依舊可以使用 foo._y 或 foo.z 來存取 13
14.
• 可以使用 del
將模組名稱或者 from import 的名稱刪除 14
15.
• 模擬 import
foo as qoo 15
16.
• del 是用來刪除指定的名稱,而不是刪除 名稱參考的物件本身 16
17.
• 想要知道目前已載入的 module
名稱與實 例有哪些,可以透過 sys.modules 17
18.
• 能根據不同的情況進行不同的 import 18
19.
設定 PTH 檔案 •
尋找模組時的來源 – 執行 python 直譯器時的資料夾 – PYTHONPATH 環境變數 – Python 安裝中標準程式庫等資料夾 – PTH 檔案列出的資料夾 19
20.
• 在一個 .pth
檔案中列出模組搜尋路徑 • PTH 檔案的位置,不同作業系統並不相同 • 可透過 site 模組的 getsitepackages() 函式取得 20
21.
• 如果確實建立了workspace.pth 中列出的 資料夾,而且將
workspace.pth 放置到 C:WinwarePython37-32 21
22.
• 如果將 workspace.pth
放置到 C:WinwarePython37-32libsite- packages 22
23.
• 如果想將 PTH
檔案放置到其他資料夾,可 以使用 site.addsitedir() 函式新增 PTH 檔案的資料夾來源 23
24.
初識物件導向 • 何時該以物件來思考或組織應用程式行為 呢? • 可以從打算將物件的狀態與功能黏在一起 時開始… 24
25.
25
26.
• 可以將初始化流程,使用 __init__()
方 法定義在類別之中 • 方法前後各有兩個連線底線,意謂著在類 別以外的其他位置,不要直接呼叫 • 基本上都會有個函式可用來呼叫這類方法 26
27.
• 在呼叫 __init__()
方法時,建立的 Account 實例會傳入作為方法的第一個參 數 • Python 的慣例中,第一個參數的名稱會命 名為 self 27
28.
• 將 deposit()
以及 withdraw() 也定義 在 Account 類別之中 • 物件的方法第一個參數一定是物件本身 28
29.
• 傳回物件描述字串的方法 • 若執行
str(acct) 時,就會呼叫 acct 的 __str__() 方法取得描述字串並傳回 29
30.
• 類別中也可以定義 __repr__()
方法 • 當執行 repr(acct) 時,就會呼叫 acct 的 __repr__() 方法取得描述字串並傳回 • __str__() 字串描述是給人類看的 • __repr__() 是給程式、機器剖析用的特 定格式時,或者是包含除錯用的字串資訊 30
31.
31
32.
32
33.
• 可能會有人如下誤用: • 如果想要避免使用者直接的誤用,可以使 用
self.__xxx 的方式定義內部值域 33
34.
34
35.
• 不能使用 acct.__name、 acct.__number、acct.__balance
進 行屬性存取,這會引發 AttributeError 35
36.
• 使用者仍然可以用另一種方式來存取: • 基本上,可以直接定義一些方法來傳回內 部屬性的值 36
37.
• 可以考慮在這類方法上加註 @property 37
38.
• 可以使用 acct.name、acct.number、 acct.balance
的形式取得值 38
39.
• 想要進一步提供 acct.balance
= 10000 這樣的形式 39
40.
• 被 @property
標註的 xxx 取值方法可以 使用@xxx.setter 標註 • 使用 @xxx.deleter 來標註對應的刪除值 之方法 • 取值方法傳回的值可以是即時運算的結果, 設值方法必要時可以使用流程語法等來實 作一些存取控制 40
41.
綁定與未綁定方法 • 如果試著將 acct.deposit
或 acct.withdraw 指定給一個變數: 41
42.
• 如果在類別中定義了一個方法,沒有任何 參數會怎樣呢? 42
43.
• 可以透過類別名稱來呼叫它,或取得函式 物件進行呼叫: • 取得綁定方法綁定的物件: 43
44.
靜態方法與類別方法 • 當呼叫 acct.deposit(500)
時,會將 acct 參考的實例傳給 deposit() 的第一 個 self 參數,也可以如下取得相同效果: • 如果想要有類似 deposit = acct.deposit 的效果: 44
45.
• 在定義類別時, 希望某個方法不被拿來作 為綁定方法,
可以使 @staticmethod • acct.default('Monica', '765- 4321'),acct 也不會傳入作為 default() 的首個參數 • 建議透過類別名稱來呼叫,明確地讓類別 名稱作為靜態方法的名稱空間 45
46.
• 在 Python
中定義的類別,也會產生對應的 物件,這個物件會是 type 的實例 46
47.
• 類別中的方法若標註了@classmethod, 那麼第一個參數一定是接受所在類別的 type 實例 47
48.
• 必要的話,一個自定義的類別實例,也可 以作為名稱空間 48
49.
• 每個物件本身,都會有個 __dict__
屬性, 當中記錄著類別或實例所擁有的特性 49
50.
• 若想取得 __dict__
的資料,其實可以使 用 vars() 函式 50
51.
• 若函式或變數以類別為名稱空間,建議透 過類別名稱來呼叫或存取 • 語義上比較清楚,一眼就可以看出函式或 變數是以類別為名稱空間 •
還可以避免以下的問題: 51
52.
• 在類別上直接新增方法: 52
53.
• del 可用來刪除變數,或已匯入目前模組 的名稱,也可用來刪除某個物件上的屬性 53
54.
• 模組也是個物件,也可以使用 del
來刪除 模組上定義的名稱 • del 真正的作用是刪除某物件上的屬性 54
55.
定義運算子 55
56.
• 建立一個有理數類別 56
57.
57
58.
58
59.
• 類別的實例如何建構,實際上是由 __new__() 方法來定義 59
60.
• 由於 __new__()
若傳回第一個參數的類別 實例,就會執行 __init__() 方法 • 藉由定義 __new__() 方法,就可以決定如 何建構物件與初始物件 60
61.
61
62.
62
63.
• 想在物件被刪除時,自行定義一些清除相 關資源的行為,可以實作 __del__()
方法 63
Download now