1. 程式人生 > >python之路--初識面向物件

python之路--初識面向物件

1. 初識面向物件
  面向過程:
    一切以事務的發展流程為中心.
  面向物件:
    一切以物件為中心. 一切皆為物件. 具體的某一個事務就是物件

  打比方:
    大象進冰箱
      步驟: 第一步, 開門, 第二步, 裝大象, 第三步, 關門

      面向物件:大象, 你進冰箱.
        此時主語是大象. 我操縱的是大象. 此時的大象就是物件

2. 類. 物件
  類: 就是圖紙. 建立物件的第一步. 先畫圖紙. 先寫類.
  物件: 物件就是車. 通過圖紙造出來的具體的東西. 通過類來建立物件

  類與物件的關係:
    類是對xxx事物的歸類.
      寫:
        __init__(self, 引數) 引數一般作為屬性設定給物件. 物件就是self, 對屬性的封裝.

        def 方法(self, 引數): 方法. 第一個引數一般是固定的self. 當前類的物件.
          pass

    物件是xx型別的一個具體
      建立物件: 類名()

 

    建立類:
    class 類名:

      def __init__(self): # 初始化方法. 又被成為構造方法
        self.屬性 = 值
        self.屬性 = 值
        self.屬性 = 值

      def fangfa(self):
        方法體(函式體, return)

    建立物件:
      變數 = 類名() # 例項化 <-> 建立物件

      變數.屬性 # 訪問物件的屬性資訊
      變數.方法() # 訪問類中的方法

class Hero:
    def __init__(self, waihao, name, story):
        self.waihao = waihao
        self.name = name
        self.story = story
    def q(self):
        print("拎著寶劍嗷嗷跑")
    def w(self):
        print("護盾")
    def e(self):
        print("電風扇")
    def r(self):
        print("大寶劍")
gw = Hero("德瑪西亞之力", "蓋倫", "500年前蓋倫拿一個破棍子捅破了玉皇大帝的尿壺...埋在五指山下")
gw.q()
gw.w()
gw.r()

 

class Phone:
    def __init__(self, color, dianchi, num, price):
        self.color = color
        self.dianchi = dianchi
        self.num = num
        self.price = price
    def call(self, ren):
        print("使用我的%s顏色價值%s的電話打給%s" % (self.color, self.price, ren))
    def play(self):
        print("電話可以打遊戲")
sj = Phone("黑色", "5W安", "110", "9W歐元")
sj.call("劉德華")
sj.play()

  

3. 面向物件和麵向過程的對比
  如果寫一些比較小的程式用面向過程.
  程式很複雜. 很龐大建議用面向物件.

4. 面向物件的三大特徵
  封裝:
    1. 對屬性的封裝(__init__())
    self.xxx = xxx
    2. 對方法和功能的封裝

  繼承
    子類自動擁有父類中除了私有內容外的其他所有內容
    class Bar(Foo): Bar對Foo進行了擴充套件
      pass

    當出現x是一種y的時候. 推薦使用繼承關係
    python支援多繼承. 查詢順序: 先找離他近的.

  多型(python原生直接就是多型)
    python更多的支援的是鴨子模型, 只要會嘎嘎叫就是好鴨子