基本概念
面向過程
- 是早期的一個編程概念,類似函數,但是沒有返回值
- 具體做法:
- 把完成某個需求的所有步驟,從頭到尾 逐步實現
- 將某些功能獨立的代碼 封裝成一個又一個 函數
- 然后順序調用不同的函數
- 特點:
- 注重 ** 步驟與過程,** 不注重職責分工
- 如果需求復雜,代碼會變得很復雜
- 開發復雜項目,沒有固定的套路,開發難度大
**面向對象
**
- 相較于函數, 面向對象是更大的封裝 ,根據** 職責** 在一個對象中封裝多個方法
- 在完成某個需求前,首選確定 ** 職責** ,根據職責確定不同的對象,在對象內部封裝不同的方法
- 最后讓不同的對象調用不同的方法
- 特點:
- 注重 對象和職責 ,不同的對象承擔不同的職責
- 更加適合對應復雜的需求變化,專門應對復雜項目開發,提供固定套路
**類和對象
**
- 類 和 對象 是面向對象的兩個核心概念
- 在程序開發中,先有 類 ,后有 對象
- 類
- 對一群具有相同 特征 或 行為的事物的一個統稱,是抽象的,不能直接使用
- 特征 即 屬性
- 行為 即 方法(函數)
- 類相當于做汽車的 圖紙 , 是一個模板, 而根據這個 **模板 **做出來的具體物品就是 對象
- 三要素
- 類名 這類事物的名字 , 使用大駝峰命名法(HelloWorld)
- **屬性 **指這類事物的特征
- 方法 指這類事物具備的行為
- 對一群具有相同 特征 或 行為的事物的一個統稱,是抽象的,不能直接使用
- 對象
- **對象 **是根據類創建出來的一個具體存在,可以直接使用
- 根據類創建出來的對象,具備與類相同的 屬性 和 方法
**類和對象的關系
**
- 類是模板,對象 是根據 **類 **這個模板創建出來的,先有類,后有對象
- 類 只有一個,根據這個類創建的 對象 可以有多個
- 不同的對象之間,屬性可能會各有不同
- 類 中定義了什么樣的屬性和方法,對象中就是什么樣的屬性與方法
基礎語法
dir內置函數
- 在 Python 中,對象幾乎無所不在,變更、數據、函數都是對象
- 使用內置函數** dir** 傳入 ** 標識符/數據** ,可以查看對象內的所有屬性和方法
- 方法名 格式的方法是Python提供的 內置方法/屬性
- 常見方法如下| 方法名 | 類型 | 作用 |
| ------------------ | ---------------- | ---------------------------------------- |
| new | 方法 | 創建對象時,會被自動調用 |
| init | 方法 | 對象被初始化時,會被自動調用 |
| del | 方法 | 對象被從內存中銷毀時,會被自動調用 |
| str | 方法 | 返回對象的描述信息,print 函數輸出使用 |
示例
# 定義函數,測試內置方法
def demo():
pass
print(dir(demo))
輸出結果
定義簡單類
- **面向對象 **是更大的封裝,在一個類中封裝多個方法,通過這個類創建的對象 可以直接使用這些方法
- 類中方法的定義,與之前定義函數時,幾乎一樣,區別在于每一個參數必須是 self,** self 表示調用者本身的引用**
- 調用中對象中的方法時,self 不需要傳遞
- 可以通過 self 調用對象的其它屬性或方法
示例
"""
需求:
定義一個狗類,狗有 吃骨頭,睡覺兩個方法
"""
class Dog:
# 第一個參數 必須是 self,表示調用者本身的引用
def eat(self):
print("狗狗要吃骨頭了...")
def sleep(self):
print("狗狗要睡覺了...")
# 定義對象調用方法
dog=Dog()
dog.eat()
dog.sleep()
# 定義第二個 狗對象
dog2=Dog()
dog2.eat()
dog2.sleep()
# dog 和dog2 是用同一個類 創建出來的,里面的方法和屬性是一樣的,但是對象的引用是不同的
print(dog)
print(dog2)
輸出結果
對象的初始化
- 當使用 類名() 創建對象時,會 自動 執行以下操作
- 為對象分配內存空間
- 為對象的屬性設置初始值(即調用 init 方法)
- **init **是對象的內置方法,專門用來定義一個類 具有哪些屬性的方法
**示例
**
class Dog:
def __init__(self,name):
print("開始初始化Dog的屬性...")
self.name=name
def eat(self):
print("%s 開始吃骨頭了..."%self.name)
def sleep(self):
print("%s 想要睡覺了..." %self.name)
# 定義對象,并為其屬性賦值
dog=Dog("小白")
dog.eat()
dog.sleep()
dog2=Dog("小黑")
dog2.eat()
dog2.sleep()
輸出結果
**內置方法
**
- del 方法:當一個對象被從內存中銷毀時,會自動調用
- 應用場景
- init 改造初始化方法,可以讓對象更加靈活
- del 如果希望對象在被銷毀前,再做一些事情,可以使用此方法
- 生命周期
- 一個對象從調用 類名() 創建,生命周期開始
- 一個對象的 del 方法一旦被調用,生命周期結束
- 在對象的生命周期內,可以訪問對象屬性,或者調用對象方法
- str 方法: 默認打印 對象變量的引用內存地址值, 如果希望使用 print 輸出對象變量時,能夠打印 自定義的內容 ,就可以利用 str 方法,該方法必須返回一個字符串
示例
class Dog:
def __del__(self):
print("小黑去輪回了......")
def __str__(self):
return "我是小黑的自定義打印內容。。。"
dog=Dog()
print(dog)
print("---------------11111111111")
輸出結果
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
編程
+關注
關注
88文章
3614瀏覽量
93686 -
函數
+關注
關注
3文章
4327瀏覽量
62573
發布評論請先 登錄
相關推薦
labview面向對象編程
點擊學習>>《龍哥手把手教你學LabVIEW視覺設計》視頻教程使用LabVIEW面向對象編程方法,對于大型測試應用程序來講,面向對象相對于面向
發表于 11-24 11:01
利用Python和PyTorch處理面向對象的數據集
本篇是利用 Python 和 PyTorch 處理面向對象的數據集系列博客的第 2 篇。 如需閱讀第 1 篇:原始數據和數據集,請參閱此處。 我們在第 1 部分中已定義 MyDataset 類,現在
利用 Python 和 PyTorch 處理面向對象的數據集(2)) :創建數據集對象
本篇是利用 Python 和 PyTorch 處理面向對象的數據集系列博客的第 2 篇。我們在第 1 部分中已定義 MyDataset 類,現在,讓我們來例化 MyDataset 對象
Python面向對象深化(下)
__call__ ?方法和可調用對象 凡是可以將 () 直接應用到自身并執行, 都稱為可調用對象. 注意: 可調用對象包括自定義的函數、Python 內置函數、以及本節所講的實例
評論