測試環境為 CentOS 8 x86_64 (虛擬機)
參考文章 – https://walkonnet.com/archives/69842
下面來看一下 繼承 與 super()
- 範例 : Cat 與 Dog 子類別繼承 Animal 父類別
[root@localhost ~]# vi Inheritance.py class Animal: def __init__(self,name): self._name = name def eat(self): print("{} {} eat".format(self.__class__.__name__ , self._name)) class Cat(Animal): pass class Dog(Animal): pass a = Animal("Joe") a.eat() cat = Cat("garfield") cat.eat() dog = Dog("odie") dog.eat()
執行結果
[root@localhost ~]# python3 Inheritance.py Animal Joe eat Cat garfield eat Dog odie eat
說明:
Cat 與 Dog 子類別都沒寫東西,直接繼承自 Animal 父類別.class Cat(Animal): pass class Dog(Animal): pass
產生 Cat 與 Dog 的 Instance 就可以直接使用 Animal 類別的屬性 Atrribute 與 方法 Method.
cat = Cat("garfield") cat.eat() dog = Dog("odie") dog.eat()
- 範例 : Cat 與 Dog 繼承 Animal 類別,但覆蓋其方法 Method.
[root@localhost ~]# vi Overwrite.py class Animal: def __init__(self,name): self._name = name def eat(self): print("{} {} eat".format(self.__class__.__name__ , self._name)) class Cat(Animal): def eat(self): print("{} {} eat sea food".format(self.__class__.__name__ , self._name)) class Dog(Animal): pass a = Animal("Joe") a.eat() cat = Cat("garfield") cat.eat() dog = Dog("odie") dog.eat()
執行結果
[root@localhost ~]# python3 Overwrite.py Animal Joe eat Cat garfield eat sea food Dog odie eat
說明:
這次 Cat 子類別除了繼承自 Animal 父類別還改寫了 eat 這個 方法 Method.class Cat(Animal): def eat(self): print("{} {} eat sea food".format(self.__class__.__name__ , self._name))
- 範例 : Cat 與 Dog 繼承 Animal 類別,使用 Super().
[root@localhost ~]# vi Supere.py class Animal: def __init__(self,name): self._name = name def eat(self): print("{} {} eat".format(self.__class__.__name__ , self._name)) class Cat(Animal): def eat(self): print("{} {} eat sea food".format(self.__class__.__name__ , self._name)) super().eat() class Dog(Animal): pass a = Animal("Joe") a.eat() cat = Cat("garfield") cat.eat() dog = Dog("odie") dog.eat()
執行結果
[root@localhost ~]# python3 Supere.py Animal Joe eat Cat garfield eat sea food Cat garfield eat Dog odie eat
說明:
這次 Cat 子類別除了繼承自 Animal 父類別還改寫了 eat 這個 方法 Method.class Cat(Animal): def eat(self): print("{} {} eat sea food".format(self.__class__.__name__ , self._name))
我們還可以透過 super 去呼叫父類別 Animal 的 eat 這個 方法 Method.
super().eat()
除了 super().eat() 也可以寫成 super(Cat,self).eat()
class Cat(Animal): def eat(self): print("{} {} eat sea food".format(self.__class__.__name__ , self._name)) # super().eat() super(Cat,self).eat()
沒有解決問題,試試搜尋本站其他內容