您現在的位置是:首頁 > 單機遊戲首頁單機遊戲
python學習之類與物件的繼承,附案例
- 2022-03-24
類的繼承與改寫是怎麼樣的
python學習之類與物件的繼承
類的繼承
繼承的用法:
class 類名(父類):
沒有繼承前,我們如果想用另一個類裡面的大多數功能或者全部功能,我們只能去手動複製另一個類中的需要用到的程式碼,然後貼上到本類中,這就失去了程式碼的特性複用性,所以出現了繼承的概念
繼承就是:把父類的功能和屬性繼承下來,然後子類就擁有了和父類一樣的功能,父類中的所有屬性和方法都可以被子類呼叫,而且子類還可以擁有屬於它自己的獨特的方法
比如:手機類有打電話,發簡訊,看影片,聽音樂等功能,但是這些功能還不滿足需求,現在想要建立一個華為手機類,它既有打電話,發簡訊,看影片,聽音樂等功能,還有5G的功能,此時就可以用繼承
首先把手機類中的所有方法都繼承下來,然後在建立自己獨特的方法
案例:
手機類:
class Phone:
‘’‘
這是一個手機類
主要功能有,打電話,發簡訊,看電視,聽音樂
主要屬性有,華為,3000,土豪金,android
’‘’
#透過初始化函式__init__把屬性進行初始化
def __init__(self,brand_name,price,color,os):#可以給初始化引數進行預設值
self。brand_name =brand_name
self。price=price
self。color= color#把引數賦值給物件,只能用物件呼叫
Phone。os = os#把引數賦值給類,既可以用類呼叫也可以用物件呼叫
#功能,定義了幾個方法
def call(self,name):
print(‘我的功能是打電話,我給{}打電話’。format(name))
@staticmethod
def massage(*arge):
print(‘我的功能是用來發簡訊的,我的簡訊內容是{}’。format(arge))
@classmethod
def watchTV(cls):#類方法,在類方法中呼叫物件方法,需要類名()。方法名(),呼叫靜態方法直接類名。方法名()
print(‘我的功能是看電視的’)
return ‘我的功能是看電視的’
@classmethod
def music(self,music_name=‘天堂’):
print(‘我的功能是用來聽音樂的,我聽的歌曲是{}’。format(music_name))
def calss_info(self):#物件方法
print(‘我的手機是{}手機,顏色是{},是{}系統,價格是{}元’。format(self。brand_name,self。color,self。os,self。price))
#呼叫類
#p=Phone(‘華為’,3500,‘土豪金’,‘android’)# 呼叫類需要在類的後面加一個括號
#p=Phone()
#p。call(‘張三’)
#p。calss_info()
if __name__ == ‘__main__’:
Phone。massage(‘今天週末明天又要上班’)
Phone。watchTV()
建立一個華為手機類
import calss_init
#建立華為類,讓它繼承手機類
class HuaWei(calss_init。Phone):
#華為手機支援5G
def G5(self):
w =self。watchTV()
print(‘我可以用5g了,{0},我可以用5g看電視’。format(w))
#因為父類中有初始化函式,所以繼承後建立物件時就需要給初始化引數賦值
h=HuaWei(‘華為’,5000,‘藍色’,‘android’)
#呼叫父類裡面的call方法
h。call(‘張三’)
h。G5()
繼承相關的拓展和重寫
拓展:就是父類沒有的方法,子類獨有的方法
重寫:就是父類已有的方法,在子類中重新定義新的功能,方法名相同,功能不同
#匯入手機類
import calss_init
#建立華為類,讓它繼承手機類
class HuaWei(calss_init。Phone):
#華為手機支援5G
def G5(self):#這個方法就是拓展出來的方法,是父類中不存在的
w =self。watchTV()
print(‘我可以用5g了,{0},我可以用5g看電視’。format(w))
def music(self):#這個方法在父類中存在 這裡重新寫了不同的功能
print(‘我是一個新的方法,我可以下載歌曲’)
#因為父類中有初始化函式,所以繼承後建立物件時就需要給初始化引數賦值
h=HuaWei(‘華為’,5000,‘藍色’,‘android’)
#呼叫父類裡面的call方法
h。call(‘張三’)
h。G5()
h。music()#此時的music的功能是子類的重新後的功能,和父類沒關係