PYTHON3中 類的繼承
阿新 • • 發佈:2018-04-12
bsp core def 類別 %s 都是 Go 創建 idt
繼承
1:什麽是繼承
繼承是一種創建新類的方式,在python中,新建的類可以繼承一個或多個父類,也就是說在python中支持一個兒子繼承多個爹。
新建的類成為子類或者派生類。
父類又可以成為基類或者超類。
子類會遺傳父類的屬性。
2:為什麽要用繼承
減少代碼冗余(也就是重復寫代碼)。
3:怎麽用繼承:
我們定義兩個類; class parenclass1: pass class parenclass2: pass 在定義兩個類: class subclass1: pass class subclass2: pass 我想讓 :class parenclass1: 作為 class subclass1: 的父類。 pass pass
應該這樣用: class subclass1( parenclass1): 這就表示subclass1是子類,parenclass 是subclass1 的父類 pass
兩個父類的話怎麽表達呢?如下: class subclass2(parenclass1,parenclass2): pass 這就表示subclass2的父類是parenclass1,parenclass2 這兩個
想要查看子類的父類 應該怎樣查看呢: 用__bases__ 如下:
class ParentClass1: pass class ParentClass2: pass class Subclass1(ParentClass1): pass class Subclass2(ParentClass1,ParentClass2): pass print(Subclass1.__bases__) #打印結果:(<class ‘__main__.ParentClass1‘>,) print(Subclass2.__bases__) #打印結果: (<class ‘__main__.ParentClass1‘>, <class ‘__main__.ParentClass2‘>)
經典類與新式類
1、只有在python2中才分新式類和經典類,python3中統一都是新式類 2、在python2中 沒有顯示繼承的object類的類,以及該類的子類都是經典類 3、在python2中,顯示的聲明繼承object的類,以及該類的子類都是新式類 4、在python3中,無論是否繼承object,都默認 繼承object,即python3中所有類均為新式類 至於經典類 與新式類的區別,後面會有討論。 提示:如果沒有指定基類, python的類會默認繼承object類, object是所有python類的基類。
二、繼承與抽象
繼承描述的是子類與父類之間的關系,是一種什麽的關系呢? 要找出這種關系, 必須先抽象在繼承。
抽象即抽取類似或者說比較像的部分。
抽象分成兩個層次:
1.將奧巴馬和梅西這倆對象比較像的部分抽取成類;
2.將人,豬,狗這三個類比較像的部分抽取成父類。
抽象最主要的作用是劃分類別(可以隔離關註點,降低復雜度)
繼承:是基於抽象的結果,通過編程語言去實現它,肯定是先經歷抽象合格過程, 才能通過繼承的方式去表達抽象的結構。
抽象只是分析和設計的過程,一個動作或者說一種技巧,通過抽象可以得到類
例如:我們寫一個老男孩的老師與學生的類,若是不涉及到繼承的話 我們正常是這樣寫
class OldboyTeacher: school = ‘oldboy‘ def __init__(self,name,age,sex): self.name=name self.age=age self.sex=sex def change_score(self): print(‘teacher %s is changing score ‘ %self.name) class Oldboystudent:
school = ‘oldboy’
def __init__(self,name,age,sex): self.name=name self.age=age self.sex=sex def choose(self): print(‘student %s choose course‘ %self.name) tea1 = OldboyTeacher(‘egon‘, 18, ‘male‘) #OldboyTeacher.__init__(...) stu1=Oldboystudent(‘alex‘,73,‘female‘) print(tea1.name,tea1.age,tea1.sex) # egon 18 male
print(stu1.name) #alex
但是我們經過分析 發現裏面裏面有許多重復代碼, 這時我們可以用到類的繼承來寫了。如下:
class OldboyPeople: school =‘oldboy‘ def __init__(self,name,age,sex): self.name=name self.age=age self.sex=sex class Oldboyteacher(OldboyPeople): def change_score(self): print(‘teacher %s is changing score ‘ %self.name)
class Oldboystudent(OldboyPeople): def choose(self): print(‘student %s choose course‘%self.name) tea1 = Oldboyteacher(‘egon‘, 18, ‘male‘) stu1=Oldboystudent(‘alex‘,73,‘female‘)
print(tea1.name,tea1.age,tea1.sex)#egon 18 male print(stu1.name) #alex
PYTHON3中 類的繼承