Python中類的繼承


假設我們有一個動物類Animal,里面有兩個屬性name、age,和兩個方法sleep()和eat()。

animal.py

 1 class Animal():
 2     
 3     def __init__(self,name,age):
 4         self.name = name
 5         self.age = age
 6         
 7     def eat(self):
 8         print("Animal " + self.name + " is eating foods")
 9         
10     def sleep(self):
11         print("Animal " + self.name + " is sleeping")

假設我們還有一個Dog類,它也包含這兩個屬性和這兩個方法,還有自己特有的屬性(color)和方法(dark)。

dog.py

 1 from animal import Animal 
 2 
 3 class Dog(Animal):
 4     def __init__(self,name,age,color):
 5         super().__init__(name,age)
 6         self.color = color
 7         
 8     def bark(self):
 9         print("Dog " + self.name + " is barking ,it is " + self.color)
10         
11     
12 my_dog = Dog('kimi',18,'red')
13 my_dog.bark()
14 my_dog.eat()
15 my_dog.sleep()

 

在我們編寫dog類的時候,就不需要在重新寫那兩個已在Animal類中的方法,我們直接繼承過來就可以使用了,第一行代碼導入Animal 類用於Dog類的繼承,導入類語法:from 模塊名 import 類名。

第三行,我們將Animal 類傳入Dog()中,表示Dog繼承Animal,而第五行的super() 表示調用父類的__init__() 方法進行初始化,Dog中還有自己特定的屬性color (顏色),因為Animal 中沒有color這個屬性,所以我們需要單獨使用 self.color=color 語句賦值,Dog類還有自己特定的方法,bark() 狗吠的方法,所以第13、14、15行代碼,既可以調用自己類中特定的方法還可以調用父類Animal中所有的方法。

 

我們也可以在給類初始化時,賦予默認值,這樣就不用傳遞每個參數,將Dog類中的__init__() 重新編寫:

def __init__(self,name,age,color=‘blue’):
        super().__init__(name,age)
        self.color = color

此時如果我們不傳入color 則,color默認為blue。

重寫父類方法

我們可以重寫父類中的方法,只需要和父類中方法名和形參數量相同即可。

 

  我的問題在於,讀書不多,而想的太多

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM