Python面向對象
1、面向對象的概念
面向對象是一種程式設計思維,目前的開發思維主要有兩類,一類是面向過程開發,以C語言為代表;另一類就是面向對象開發,Python、java等都是面向對象的代表。面向過程是以事物運作的過程為依據,将事物運作的過程通過計算機語言實作,進而實作計算機對現實世界的模拟運作;面向過程則是對事物運作過程中的每個參與者,将其抽象為一個具體的對象,進而實作程式模拟事務的運作。
2、面向對象的要素
2.1、對象
- 在Python中,一切皆對象。定義的類是類對象,類的執行個體是執行個體對象。
2.2、執行個體
- 類的具體實作,通過執行個體通路類的方法。
2.3、類
- 對現實事物的抽象,比如将人可以定義為一個類,男人也可以定義為一個類。
2.4、方法
- 事物的動态屬性在程式中的抽象展現,比如吃飯、購物、唱歌等
- 類具有靜态方法、執行個體方法和類方法
2.4.1、靜态方法
靜态方法通過執行個體對象和類對象都可以調用,定義時使用裝飾器@staticmethod修飾。參數自定義,沒有“self”和“cls”參數,但是方法體中不能使用類或執行個體的任何屬性和方法。
2.4.2、執行個體方法
隻能通過執行個體對象調用,定義時第一個參數必須是執行個體對象,該參數名一般約定為“self”,通過它來傳遞執行個體的屬性和方法。
2.4.3、類方法
執行個體對象和類對象都可以調用類方法,定義時使用裝飾器@classmethod修飾。第一個參數必須是目前類對象,該參數名一般約定為“cls”,通過它來傳遞類的屬性和方法。
# coding:utf-8
# Time:2022/6/28 20:57
# Author:Yang Xiaopeng
class person:
# 屬性
city = "xian"
# 類方法
@classmethod
def eatting(cls):
print("吃飯", end="______eatting______")
print(cls.city)
# 靜态方法
@staticmethod
def shopping():
print("購物", end="______shopping______")
print()
# 執行個體方法
def Sing(self):
print("唱歌", end="______Sing______")
print(self.city)
print(person.city, person.eatting()) # 通過類通路類屬性及類方法 # 吃飯______eatting______xian 第二行:xian None
pr1 = person() # 建立類對象, pr1就是person的一個執行個體
pr1.eatting() # 通過執行個體通路類方法 # 吃飯______eatting______xian
pr1.shopping() # 通過執行個體通路類的靜态方法 # 購物______shopping______
pr1.Sing() # 通過執行個體通路類的執行個體方法 # 唱歌______Sing______xian
print(pr1.city) # 通過執行個體通路類的屬性 # xian
2.5、繼承
一種聯結類的層次模型,并且允許和鼓勵類的重用,提供一種明确表達共性的方法。對象的一個新類可以從現有的類中派生,這個過程稱為類繼承。新類繼承了原始類的特性,新類稱為原始類的派生類(子類),原始類稱為新類的基類(父類)。可以說,繼承為了重用父類代碼,同時為實作多态性做準備。
# coding:utf-8
# Time:2022/6/28 20:57
# Author:Yang Xiaopeng
class person:
# 屬性
city = "xian"
# 類方法
@classmethod
def eatting(cls):
print("吃飯", end="______eatting______")
print(cls.city)
# 靜态方法
@staticmethod
def shopping():
print("購物", end="______shopping______")
print()
# 執行個體方法
def Sing(self):
print("唱歌", end="______Sing______")
print(self.city)
class student(person):
def studying(self):
print("學習")
print(self.city) # 使用父類的類屬性
print(self.eatting()) # 使用父類的類方法
xiaoming = student()
print(xiaoming.city) # 通過子類的執行個體對象通路父類的屬性
xiaoming.eatting() # 通過子類的執行個體對象通路父類的類方法
xiaoming.Sing() # 通過子類的執行個體對象通路父類的執行個體方法
xiaoming.shopping() # 通過子類的執行個體對象通路父類的靜态方法
xiaoming.studying() # 子類的執行個體對象通路子類的靜态方法