Python面向?qū)ο蟪绦蛟O(shè)計(jì)之繼承、多態(tài)原理與用法詳解
本文實(shí)例講述了Python面向?qū)ο蟪绦蛟O(shè)計(jì)之繼承、多態(tài)原理與用法。分享給大家供大家參考,具體如下:
相關(guān)內(nèi)容:繼承:多繼承、super、__init__、重寫(xiě)父類(lèi)變量或函數(shù)
多態(tài)
繼承: 在Python3中,不寫(xiě)基類(lèi)的類(lèi)默認(rèn)繼承object 繼承就是子類(lèi)獲得了父類(lèi)的全部功能:比如學(xué)生和老師都有“姓名,性別,年齡、ID”等學(xué)校人員屬性,如果學(xué)生和老師都直接繼承學(xué)校人員的“姓名,性別,年齡、ID”,那么就不必要在學(xué)生類(lèi)和老師類(lèi)中重復(fù)定義了。 繼承指定類(lèi)的方式是:class 類(lèi)名(基類(lèi)名)
class SchoolPerson: def study(self): print('it’s time to study')class Student(SchoolPerson):#繼承的方法 passa=Student()a.study()----------------------結(jié)果:it’s time to study
上述結(jié)果顯示,Student繼承了SchoolPerson中的study函數(shù)
python支持多繼承:class SubClassName (ParentClass1[, ParentClass2, ...]): 對(duì)象對(duì)于屬性【包括變量和函數(shù)】的查找路徑:本實(shí)例對(duì)象--》本類(lèi)--》基類(lèi)【如果有多個(gè)基類(lèi),從左到右到基類(lèi)中查找】 可以調(diào)用基類(lèi)的__init__方法: 方式有兩種:
,建議使用super,避免錯(cuò)誤使用多次基類(lèi)的__init__ class SchoolPerson: def __init__(self,name,age,sex,mid): self.name=name self.age=age self.sex=sex self.mid=mid def study(self): print('it’s time to study')class Student(SchoolPerson):#繼承的方法 def __init__(self,name,age,sex,mid,grade): # super(Student,self).__init__(name,age,sex,mid) SchoolPerson.__init__(self,name,age,sex,mid) self.grade=grade def study(self): print('i am student,i want to study')a=Student(’A’,18,’m’,’001’,1)a.study()print(a.name,a.age,a.mid,a.grade) 對(duì)于多繼承中的調(diào)用基類(lèi)的__init__:無(wú)論多少個(gè)基類(lèi),也只會(huì)調(diào)用一次基類(lèi)的__init__



class SchoolPerson: def __init__(self,name,age,sex,mid): self.name=name self.age=age self.sex=sex self.mid=mid def study(self): print('it’s time to study')class Student(SchoolPerson):#繼承的方法 def __init__(self,name,age,sex,mid,grade): super(Student,self).__init__(name,age,sex,mid) self.grade=grade def study(self): print('i am student,i want to study')a=Student(’A’,18,’m’,’001’,1)a.study()--------------------------結(jié)果:i am student,i want to study多態(tài):

class Animal: def __init__(self, name): self.name = name def talk(self): pass @staticmethod ####如果硬要說(shuō)多態(tài),建議使用靜態(tài)方法來(lái)處理,而非普通函數(shù) def animal_talk(obj): obj.talk()class Cat(Animal): def talk(self): print(’喵!’)class Dog(Animal): def talk(self): print(’wang’)d = Dog('小黑')c = Cat('小白')# def animal_talk(obj):# obj.talk() ###這也是一個(gè)能實(shí)現(xiàn)功能的函數(shù),因此python多態(tài)才具有爭(zhēng)議性Animal.animal_talk(c)Animal.animal_talk(d)
更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python面向?qū)ο蟪绦蛟O(shè)計(jì)入門(mén)與進(jìn)階教程》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python編碼操作技巧總結(jié)》及《Python入門(mén)與進(jìn)階經(jīng)典教程》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
相關(guān)文章:
1. Docker 啟動(dòng)Redis 并設(shè)置密碼的操作2. asp文件用什么軟件編輯3. ASP新手必備的基礎(chǔ)知識(shí)4. CentOS郵箱服務(wù)器搭建系列——SMTP服務(wù)器的構(gòu)建( Postfix )5. PHP基礎(chǔ)之生成器4——比較生成器和迭代器對(duì)象6. python 實(shí)現(xiàn)有道翻譯功能7. JAVA 實(shí)現(xiàn)延遲隊(duì)列的方法8. vue限制輸入數(shù)字或者保留兩位小數(shù)實(shí)現(xiàn)9. vue+element開(kāi)發(fā)一個(gè)谷歌插件的全過(guò)程10. 利用CSS制作3D動(dòng)畫(huà)

網(wǎng)公網(wǎng)安備