Python基礎語法介紹:面向對象編程(上)

面向對象編程

面向對象編程,簡稱OOP:是一種解決軟件服用的設計和編程方法。這種方法把軟件系統中相似的邏輯操作、數據、狀態等以類的形式描述出來,通過對象實例在軟件系統中複用,從而提高軟件開發效率。

類和對象

定義和關係

  • :一個事物的抽象,定義了一類事物的屬性和行爲。類具有繼承,多態,封裝等特性。
    class 類名: #類命名規則遵守“大駝峯”
    def 方法名(self [, 參數列表]):   #默認要傳入一個self參數,而且第一個參數必須是self 
  • 對象:通過類創建的一個具體事物,也就是類的實例,它具有狀態和行爲,可以做具體的事情。
    對象變量名 = 類名()
  • 兩者關係:類相當於創建對象的模板,根據類可以創建一個或者多個對象實例。

類的方法

類的構造方法

  • _ init _構造方法:用於對象創建時初始化
    • 調用時間:在對象被實例化時被程序自動調用
    • 程序不顯示定義init方法,則程序默認調用一個無參init方法
    • 對象創建過程
      Python基礎語法介紹:面向對象編程(上)

類的私有方法

  • 只能在類內部調用,在類的外部無法調用
  • 私有方法:在方法名前添加兩個下劃線,私有屬性如是
  • 類內部調用私有方法要使用self.private_method()的方式調用

    class Comrade:
    #私有方法
    def __send_message(self):
        print("消息已經向上級彙報")
    
    def answer_secret(self, secret):
        if secret == "芝麻開門":
            print("接頭成功!")
            self.__send_message()#調用私有方法
        else:
            print("接頭失敗!")
    comrade = Comrade()
    comrade.answer_secret("芝麻開門")

類的訪問權限

#設置對象屬性
def __init__(self, gender, variety, name):
    self.gender = gender
    self.variety = variety
    self.name = name

修改對象屬性有兩種形式:

  • 直接對屬性值進行賦值
  • 通過方法對屬性值進行修改。這是推薦方式。可以達到對數據進行封裝。

類的特性一:繼承和多重繼承

繼承
定義:在程序中,子類從父類繼承,但是子類又可以提供除父類外自身獨有的方法和屬性。比如貓和狗都是動物,動物如果是父類的話,那麼貓和狗就是動物的子類。父類通常是抽象出帶有一些共性的特徵和方法的類。

#父類Animal
class Animal:
    def eat():
        print("eat")
#Dog
class Dog(Animal):
    def shout()
        print("汪汪汪")
wangcai = Dog()
#調用父類的eat
wangcai.eat()
#調用自身成員方法
wangcai.shout()

繼承注意事項

  • 子類的非有屬性、方法,會被子類繼承
  • 子類中方法的查找:先子類方法 =》後父類方法
  • 子類可以繼承祖先類的非私有屬性和方法
  • 在子類中調用父類的方法:ClassName.Method(self)

多重繼承
定義:一個類可以從多個父類繼承。
多繼承的定義方式:

class AI:
    #人臉識別
    def face_recongnition(self):
        print("人臉識別")
    def data_handle(self):
        print("AI數據處理")

class BigData:
    def data_analysis(self):
        print("數據分析")
    def data_handle(self):
        print("BigData數據處理")

class Python(BigData, AI):     #多重繼承
    def operation(self):
        print("自動化運維")

對於多重繼承,子類調用查找同名方法的順序:

  • 取決於小括號內繼承父類從左到右的順序查找。
  • 可以通過類的方法 _ mro _來查看查找順序。

類的特性二:多態

  • 定義:一個抽象類有多個子類,不同的類表現出不同的形態。比如狗和貓,他們都會叫,但是叫的聲音是不同的。
  • 子類對父類允許訪問的方法的實現過程進行重新編寫
  • 在子類中定義與父類同名的方法。子類可以根據需要,定義合適的方法實現邏輯。

綜合例子: 繼承和多態

class Animal:
    def __init__(self):
        print("---animal構造方法---")

    def __private_method(self):
        print("私有方法")
    def eat(self):
        print("----吃----")
    def drink(self):
        print("----喝----")
    def run(self):
        print("----跑----")

class Dog(Animal):
    def __init__(self):
        print("dog構造方法")
    #父類方法重寫 
    def run(self):                     #多態
        print("搖着尾巴跑")
    def hand(self):
        Animal.run(self)              #在子類中調用父類
        print("------握手-----")

class GoldenDog(Dog):
    def guid(self):
        print("我能導航!")
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章