Python入門教程(二十三)Python的繼承
Python 繼承
繼承允許我們定義繼承另一個(gè)類的所有方法和屬性的類。
父類是繼承的類,也稱為基類。
子類是從另一個(gè)類繼承的類,也稱為派生類。
創(chuàng)建父類
任何類都可以是父類,因此語(yǔ)法與創(chuàng)建任何其他類相同:
實(shí)例
創(chuàng)建一個(gè)名為 Person 的類,其中包含 firstname 和 lastname 屬性以及 printname 方法:
class Person: def __init__(self, fname, lname): self.firstname = fname self.lastname = lname # Python學(xué)習(xí)交流裙:279199867 def printname(self): print(self.firstname, self.lastname) # 使用 Person 來(lái)創(chuàng)建對(duì)象,然后執(zhí)行 printname 方法: x = Person("Bill", "Gates") x.printname()
運(yùn)行實(shí)例
python_inheritance_parent.py Bill Gates
創(chuàng)建子類
要?jiǎng)?chuàng)建從其他類繼承功能的類,請(qǐng)?jiān)趧?chuàng)建子類時(shí)將父類作為參數(shù)發(fā)送:
實(shí)例
創(chuàng)建一個(gè)名為 Student 的類,它將從 Person 類繼承屬性和方法:
class Student(Person): pass
注釋:如果您不想向該類添加任何其他屬性或方法,請(qǐng)使用 pass 關(guān)鍵字。
現(xiàn)在,Student 類擁有與 Person 類相同的屬性和方法。
實(shí)例
使用 Student 類創(chuàng)建一個(gè)對(duì)象,然后執(zhí)行 printname 方法:
x = Student("Elon", "Musk") x.printname()
運(yùn)行實(shí)例
python_inheritance_child.py Elon Musk
添加 init() 函數(shù)
到目前為止,我們已經(jīng)創(chuàng)建了一個(gè)子類,它繼承了父類的屬性和方法。
我們想要把 init() 函數(shù)添加到子類(而不是 pass 關(guān)鍵字)。
注釋:每次使用類創(chuàng)建新對(duì)象時(shí),都會(huì)自動(dòng)調(diào)用 init() 函數(shù)。
實(shí)例
為 Student 類添加 init() 函數(shù):
class Student(Person): def __init__(self, fname, lname): # 添加屬性等
當(dāng)您添加 init() 函數(shù)時(shí),子類將不再繼承父的 init() 函數(shù)。
注釋:子的 init() 函數(shù)會(huì)覆蓋對(duì)父的 init() 函數(shù)的繼承。
如需保持父的 init() 函數(shù)的繼承,請(qǐng)?zhí)砑訉?duì)父的 init() 函數(shù)的調(diào)用:
實(shí)例
class Student(Person): def __init__(self, fname, lname): Person.__init__(self, fname, lname)
運(yùn)行實(shí)例
python_inheritance_init.py Elon Musk
現(xiàn)在,我們已經(jīng)成功添加了 init() 函數(shù),并保留了父類的繼承,我們準(zhǔn)備好在 init() 函數(shù)中添加功能了。
使用 super() 函數(shù)
Python 還有一個(gè) super() 函數(shù),它會(huì)使子類從其父繼承所有方法和屬性:
實(shí)例
class Student(Person): def __init__(self, fname, lname): super().__init__(fname, lname)
運(yùn)行實(shí)例
python_inheritance_super.py Elon Musk
通過(guò)使用 super() 函數(shù),您不必使用父元素的名稱,它將自動(dòng)從其父元素繼承方法和屬性。
添加屬性
實(shí)例
把名為 graduationyear 的屬性添加到 Student 類:
class Student(Person): def __init__(self, fname, lname): super().__init__(fname, lname) self.graduationyear = 2019
運(yùn)行實(shí)例
python_inheritance_add_prop_1.py 2019
在這例子中,2019 年應(yīng)該是一個(gè)變量,并在創(chuàng)建 student 對(duì)象時(shí)傳遞到 Student 類。為此,請(qǐng)?jiān)?init() 函數(shù)中添加另一個(gè)參數(shù):
實(shí)例
添加 year 參數(shù),并在創(chuàng)建對(duì)象時(shí)傳遞正確的年份:
class Student(Person): def __init__(self, fname, lname, year): super().__init__(fname, lname) self.graduationyear = year x = Student("Elon", "Musk", 2019)
運(yùn)行實(shí)例
python_inheritance_add_prop_2.py 2019
添加方法
實(shí)例
把名為 welcome 的方法添加到 Student 類:
class Student(Person): def __init__(self, fname, lname, year): super().__init__(fname, lname) self.graduationyear = year def welcome(self): print("Welcome", self.firstname, self.lastname, "to the class of", self.graduationyear)
運(yùn)行實(shí)例
python_inheritance_add_method.py Welcome Elon Musk to the class of 2019
提示:如果您在子類中添加一個(gè)與父類中的函數(shù)同名的方法,則將覆蓋父方法的繼承。
到此這篇關(guān)于Python入門教程(二十三)Python的繼承的文章就介紹到這了,更多相關(guān)Python的繼承內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python3實(shí)現(xiàn)名片管理系統(tǒng)(控制臺(tái)版)
這篇文章主要為大家詳細(xì)介紹了python3實(shí)現(xiàn)名片管理系統(tǒng)控制臺(tái)版,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-11-11淺談python中copy和deepcopy中的區(qū)別
Python學(xué)習(xí)過(guò)程中會(huì)遇到許多問(wèn)題,最近對(duì)copy和deepcopy略感困惑,下面對(duì)其進(jìn)行解答,需要的朋友可以參考。2017-10-10python+appium+yaml移動(dòng)端自動(dòng)化測(cè)試框架實(shí)現(xiàn)詳解
這篇文章主要介紹了python+appium+yaml移動(dòng)端自動(dòng)化測(cè)試框架實(shí)現(xiàn)詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11python 實(shí)現(xiàn)GUI(圖形用戶界面)編程詳解
今天小編就為大家分享一篇python 實(shí)現(xiàn)GUI(圖形用戶界面)編程詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-07-07Python中break語(yǔ)句和continue語(yǔ)句的用法講解
在Python中,break語(yǔ)句和continue語(yǔ)句一般用于循環(huán)語(yǔ)句中,這篇文章主要介紹了Python中break語(yǔ)句和continue語(yǔ)句的用法小結(jié),需要的朋友可以參考下2022-12-12Python數(shù)據(jù)可視化:頂級(jí)繪圖庫(kù)plotly詳解
今天小編就為大家分享一篇Python數(shù)據(jù)可視化:頂級(jí)繪圖庫(kù)plotly詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12Django Form and ModelForm的區(qū)別與使用
這篇文章主要介紹了Django Form and ModelForm的區(qū)別與使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12