2016年7月25日 星期一

Python 的覆寫方法與 super 應用

類別覆寫方法結構
  • 方法的覆寫,是利用物件導向的繼承功能來報成!好處如下:
    • 可開發相同名稱,但功能不一定同於父類別的方法程式!
    • 可任意擴充或縮限父類別的方法,免於被父類別的方法所限制!
    • 利用 super ,可善用父類別內的方法!
  • 可參考前一篇文章!
  • Python 覆寫方法的基本格式:
    class 類別名稱():
        def 方法名稱(屬性名稱[,...]):
           執行程式內容
             :
             :
    
    class 子類別名稱(父類別名稱):
        def 同於父類別的方法名稱(屬性名稱[,...]):
           super().父類別的方法名稱
           執行不同於父類別的程式內容
             :
             :
    
快速測試:
  1. 修改 human.py 的內容:
    #vim human.py
    class Human():
      def __init__(self):
        self.name = "I am a Human"
    
      def showName(self):
        return self.name
    
      def eat(self):
        print("eating food ...")
    
    
  2. 修改 asian.py 的內容:
    #vim asian.py
    from human import Human
    
    class Asian(Human):
       def __init__(self,name):
          super().__init__()
          self.name = super().showName()+ "\n" + "I am a Asian!" + name
    
       def showName(self):
          return self.name
    
       def eat(self):
          print("eating rise food ...")
    
    
  3. 修改 runprogram.py 的內容:
    #vim runprogram.py
    from asian import Asian
    from american import American
    
    peter = Asian("Peter")
    print(peter.showName())
    peter.eat()
    
    
  4. 執行程式:
    #python3 runprogram.py
    I am a Human
    I am a Asian!Peter
    eating rise food ...