##################################################
目錄
活動簡介
簡介 POP 與 OOP 程式設計
面向過程/POP 與 面向對象/OOP 差別
為什麼會出現 OOP 面向對象程式設計
面向對象三大特征
封裝
繼承
多态
面向對象程式設計思想
什麼是類
什麼是對象
面向對象程式設計基本步驟
最通俗易懂的解釋就是 new 個對象!
Python 中的類和對象
Python 中如何定義一個類
Python 中類、屬性和方法的命名規範
Python 2 經典類
Python 3 新型類
Python 3 的内置屬性和方法
Python 執行個體化一個對象
Python 中如何通路類的成員屬性和成員方法
通過執行個體化對象通路成員屬性
通過類名通路成員屬性
通過類名或示例名調用成員方法并利用 self 進行傳參
##################################################
活動簡介
活動位址:CSDN21天學習挑戰賽
學習的最大理由是想擺脫平庸,早一天就多一份人生的精彩;遲一天就多一天平庸的困擾;一個人摸索學習很難堅持,想組團高效學習;想寫部落格但無從下手,急需寫作幹貨注入能量;熱愛寫作,願意讓自己成為更好的人…
…
歡迎參與CSDN學習挑戰賽,成為更好的自己,請參考活動中各位優質專欄部落客的免費高品質專欄資源(這部分優質資源是活動限時免費開放喔~),按照自身的學習領域和學習進度學習并記錄自己的學習過程,或者按照自己的了解釋出專欄學習作品!
##################################################
簡介 POP 與 OOP 程式設計
——————————
面向過程/POP 與 面向對象/OOP 差別
根據代碼的組織方式不同 程式設計語言大體上可以分為兩種 —— 面向對象 與 面向過程
面向過程語言:
面向過程就是分析出解決問題所需要的步驟 這是分析步驟
然後用函數把這些步驟一步一步實作 這是編寫函數
使用的時候再依次調用 這是調用函數
類似流水線的工作原理 這是解釋運作
面向對象語言:
面向對象是把構成問題事務分解成各個對象 這是分析步驟
建立對象的目的不是為了完成一個步驟而是為了描叙某個事物在完整解決問題步驟中的行為 這是編寫類和函數
依靠各個對象之間的互動推動程式執行進而實作問題的解決 這是解釋運作過程中發生的事
對這兩種程式設計機制 Python 均提供了良好支援!
總體而言 Python 更偏向于成為面向對象程式設計的程式設計語言……
——————————
為什麼會出現 OOP 面向對象程式設計
面向過程程式設計 Process-Oriented Programming/POP 是根據業務邏輯從上到下寫代碼 典型的像 C 語言
使用傳統的面向過程程式設計機制構造系統時 在重用、維護、擴充等方面會出現諸多問題
并且邏輯過于複雜 代碼易讀性差
面向對象的程式設計是對變量和函數進行分類和封裝 讓開發更快更好更強
面向對象的程式設計 Object-Oriented Programming 縮寫為 OOP
典型如 C++、Java、C# 等
——————————
面向對象三大特征
%%%%%
封裝
找到變化并且把她封裝起來
就可以在不影響其她部分的情況下修改或擴充被封裝的變化部分
這是所有設計模式的基礎
封裝解決了程式的可擴充性
%%%%%
繼承
子類繼承父類
可以繼承父類的方法及屬性
實作了多态以及代碼的重用
解決了系統的重用性和擴充性
%%%%%
多态
接口的多種不同的實作方式即為多态
接口的主要目的是為不相關的類提供通用處理服務
這實作了系統的可維護性和可擴充性
——————————
面向對象程式設計思想
面向對象程式設計的核心思想是把構成問題的各個事物分解成能夠完整描述該實體功能的封裝類
并通過對象的互動完成問題的解決
對象作為程式的基本機關 将程式和資料封裝于其中 以提高程式的重用性、靈活性和可擴充性!
類是建立對象的模闆 而對象是類的執行個體化 一個類可以建立多個對象!
執行個體化是指在面向對象的程式設計中用類建立對象的過程我們稱之為執行個體化:
執行個體化是将一個抽象的概念類
執行個體化是具體到該類的一個實物實體的過程
%%%%%
什麼是類
類
是泛指
是對實體的總結抽象
例如植物類
例如生物類
例如用品類
%%%%%
什麼是對象
對象
是實體
是現實世界中的類中的一個具體存在的實物
例如植物類中的 蘋果 這是一個對象 或者 香蕉 這也是一個對象
例如生物類中的 貓貓 或者 狗狗
例如用品類中的 杯子、碗
%%%%%
面向對象程式設計基本步驟
OOP 程式設計最簡單的步驟:
分析哪些動作是由哪些實體發出的 這是分析步驟
定義這些實體為其增加相應的屬性和功能 這是定義類步驟
讓實體去執行相應的功能或動作 這是編寫函數建立對象的步驟
例如:
動物類可以對狗的特征和行為進行抽象
例如狗 特征是有顔色有毛 行為是會跑會叫
然後可以執行個體化為真實的動物實體
例如我們可以 new 一個具體的狗對象進行調用!
%%%%%
最通俗易懂的解釋就是 new 個對象!
有一個女朋友類 包含了世界上所有的女朋友
最基本的特征和行為就是 漂亮和做飯
然後你利用這個女朋友類執行個體化出來一個女朋友對象
變量是漂亮程度 函數是做什麼飯!!!
##################################################
Python 中的類和對象
——————————
Python 中如何定義一個類
%%%%%
Python 中類、屬性和方法的命名規範
類名表示執行個體的抽象 命名時首字母大寫!
屬性使用名詞作為名字 例如 name、age、weight 等,,
方法名一般指對屬性的操作 其命名規則一般采用動詞加屬性名稱形式 例如 updataName、updataAge、updataWeight 等。
%%%%%
Python 2 經典類
Python 2 中使用 class 關鍵字來建立類 不繼承 object 類 類内部由屬性和方法組成 文法如下:
class 類名:
# 類注釋
屬性
方法
%%%%%
Python 3 新型類
Python 3 中類定義必須繼承 object 方法 如果括号中不指定則預設繼承 object 類
解決了諸如多重繼承時的歧義等 并且提供了對
類方法
和
靜态方法
的支援 文法如下:
class 類名 ( 父類 )
# 類注釋
屬性
方法
示例聲明:
class ABC:
# 預設繼承 object
class Abc():
# 預設繼承 object
class Abc ( object ):
# 指定繼承 object 類
%%%%%
Python 3 的内置屬性和方法
Python 3 新增的内置屬性:
__name__ 屬性的名字
__doc__ 屬性的文檔字元串
内置方法如下:
__get__(object) 擷取對象屬性值的方法
__set__(object, value) 設定對象屬性值的方法
__delete__(object, value) 删除對象屬性的方法
——————————
Python 執行個體化一個對象
類建立完之後就應該建立該類的執行個體或對象了 該過程稱之為執行個體化
當一個對象被建立後 就包含如下這三個對象特性了:
辨別 對象辨別用于區分不同的對象
屬性 類中的成員變量
方法 成員函數
執行個體化對象文法:
對象辨別符 = 類名 ( 屬性清單 )
——————————
Python 中如何通路類的成員屬性和成員方法
%%%%%
通過執行個體化對象通路成員屬性
通路成員屬性使用點操作符:
>>> class Lei(): # 建立一個類
... name = "傻子" # 這裡是屬性
... age = 521
...
>>> me = Lei() # 執行個體化一個 me 對象
>>> print ( "我的名字是 >>> ", me.name ) # 輸出類的 name 屬性值
我的名字是 >>> 傻子
>>> me.name = "大傻幾" # 修改類的 name 屬性值
>>> print ( "我的名字是 >>> ", me.name ) # 再次輸出
我的名字是 >>> 大傻幾
>>>
%%%%%
通過類名通路成員屬性
>>> class Lei(): # 建立一個類
... name = "傻子" # 這裡是屬性
...
>>> Lei.name # 通過類名通路成員屬性
'傻子'
>>>
%%%%%
通過類名或示例名調用成員方法并利用 self 進行傳參
這個 self 真的很重要!!!如果你不加上就會出現各種各樣的 bug ……
self 參數很重要!而且是自動傳入的不需要指定
self 表示目前執行個體對象本身而不是目前類!
self 隻會出現在類的方法中
VSCode code:
class Test: # 聲明 Test 類
age = 521 # 聲明 age 參數 預設 521
def getAge(self):
# 擷取該 Test 類的 age 值
print ( "年齡 >>> ", self.age )
def setAge ( self, sAge ):
# 設定該 Test 類的 age 值
self.age = sAge
print ( "年齡 <<< ", self.age )
test_1 = Test # 執行個體化 test_1 對象
print ( test_1.age ) # 檢視 test_1 對象的 age 值
test_2 = Test() # 執行個體化 test_2 對象
print()
test_2.setAge(10) # 傳參手動設定 test_1 對象的年齡
test_2.getAge() # 檢視設定後的 test_1 對象的 age 值
VSCode demo:
Windows PowerShell
版權所有 (C) 2014 Microsoft Corporation。保留所有權利。
PS C:\Users\byme> python -u "e:\PY\test.py"
521
年齡 <<< 10
年齡 >>> 10
PS C:\Users\byme>
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnLkJTY1EGZ3UDMjZ2MzADO4UGO5QDZ5kjZmJmZ0UTNxQzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)