天天看點

Python面向對象Python面向對象

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


           
Python面向對象Python面向對象

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()      # 子類的執行個體對象通路子類的靜态方法


           

2.6、多态

2.7、封裝