1. 程式人生 > >python 類的繼承

python 類的繼承

elf blog 多個 蘿蔔 lin and eat gpo pass

類的繼承

  • 相關概念:

    • 繼承:父類的屬性和方法子類可以直接擁有稱為繼承

    • 派生:子類在父類的基礎上衍生出來的新的特征(屬性和方法)

    • 總結:其實他們是一回事,只是描述問題的角度側重點不同(繼承側重相同點,派生側重不同點)

  • 相關語法:

    
    
    
    # class Animal(object):
      # 當沒有指定父類時,相當默認父類為object
      class Animal:
          def __init__(self, name):
              self.name = name
    ?
          def eat(self):
              print(小動物喜歡一天到晚吃個不停
    ) # 繼承自Animal class Dog(Animal): pass ? d = Dog(旺財) # 直接擁有父類的方法 d.eat() # 直接擁有父類的屬性 print(d.name)

  • 派生:子類可以擴充屬性和方法

    
    
    
    class Animal:
        def run(self):
            print(小動物喜歡到處亂跑)
            
    class Rabbit(Animal):
        # 添加方法
        def eat(self):
            print(愛吃蘿蔔和青菜)
            
    xiaobai 
    = Rabbit() xiaobai.run() xiaobai.eat() # 添加屬性 xiaobai.color = white print(xiaobai.color)

  • 重寫:

    • 父類的方法完全不合適,子類需要全部的覆蓋

    • 父類的方法合適,但是需要完善

    • 示例:

    
    
    
    class Animal:
          def run(self):
              print(小動物喜歡到處亂跑)
    ?
          def eat(self):
              print(小動物也是一天三頓)
                
    class Cat(Animal):
        
    # 當父類的方法完全不合適時,可以覆蓋重寫 def run(self): print(俺走的是貓步) ? # 父類的方法合適,但是子類需要添加內容完善功能 def eat(self): # 調用父類方法,不建議使用 # Animal.eat(self) # super(Cat, self).eat() # 類名及self可以不傳 super().eat() print(不過俺喜歡吃魚) ? jiafei = Cat() jiafei.run() jiafei.eat()

  • 多繼承

    • 概念:一個類可以有多個父類

    • 示例:

    
    
    
    class A:
        def eat(self):
            print(eat func of A)
         
    class B:
        def eat(self):
            print(eat func of B)
            
    # 多繼承,多個父類使用逗號隔開
    class C(B, A):
        def eat(self):
            # 當多個父類擁有相同的方法時,會按照繼承時的先後順序進行選擇
            # super().eat()
            # 如果非要使用後面的類的方法時,可以明確指定進行調用
            A.eat(self)
            
    c = C()
    c.eat()

python 類的繼承