python物件導向程式設計 繼承與派生

2021-08-21 00:00:02 字數 2688 閱讀 6422

一.什麼是繼承

繼承是一種新建類的方式,新建的類稱為子類,被繼承的類稱為父類

繼承的特性是:子類會遺傳父類的屬性

強調:繼承是類與類之間的關係

二.為什麼用繼承

因為繼承的好處就是可以減少**的冗餘

三.如何繼承

在python中支援乙個類同時繼承多個父類

在python3中

如果乙個類沒有繼承任何類,那預設繼承object類

在python2中

如果乙個類沒有繼承任何類,不會繼承object類

強調:在python3中都是新式類,只要在python2中才區別新式類與經典類

新式類和經典類的區分:

新式類:但凡繼承了object的類以及該類的子類,都是新式類

經典類:沒有繼承object的類以及該類的子類都是經典類

class parent1: #定義父類

pass

class parent2: #定義父類

pass

class sub1(parent1): #單繼承,基類是parentclass1,派生類是subclass

pass

class sub2(parent1,parent2): #python支援多繼承,用逗號分隔開多個繼承的類

pass

檢視繼承:

print(paren1.__bases__)

print(paren2.__bases__)

print(sub1.__bases__)

四. 派生:

子類中新定義的屬稱為派生,在使用中始終以自己的為準

物件查詢屬性的順序:物件自己-》物件的類-》父類-》父類。

在子類派生出的新功能中重用父類功能的方式有兩種:

方式一:與繼承無關    

指名道姓法,直接用:類名.函式名 (

當成普通函使用,該傳幾個值就傳幾個

# class oldboypeople:

# school = 'oldboy'

## def __init__(self, name, age, ***):

# self.name = name

# self.age = age

# self.*** = ***

## class oldboystudent(oldboypeople):

# def __init__(self,name,age,***,stu_id):

# oldboypeople.__init__(self,name,age,***) ####直接呼叫,當成普通函使用,該傳幾個值就傳幾個

# self.stu_id=stu_id

## def choose_course(self):

# print('%s is choosing course' %self.name)直接呼叫,當成普通函使用,該傳幾個值就傳幾個

# self.stu_id=stu_id

## def choose_course(self):

# print('%s is choosing course' %self.name)

方式二:嚴格按照繼承屬性查詢關係

super()會得到乙個特殊的物件,該物件就是專門用來訪問父類中的屬性的(按照繼承的關係)

super().__init__(不用為self傳值)

注意:

super的完整用法是super(自己的類名,self),在python2中需要寫完整,而python3中可以簡寫為super()

# class oldboypeople:

# school = 'oldboy'

## def __init__(self, name, age, ***):

# self.name = name

# self.age = age

# self.*** = ***

## class oldboystudent(oldboypeople):

# def __init__(self,name,age,***,stu_id):

# # oldboypeople.__init__(self,name,age,***)

# super(oldboystudent,self).__init__(name,age,***) # ##super()__init__(name,age,***)

# self.stu_id=stu_id

## def choose_course(self):

# print('%s is choosing course' %self.name)##

# stu1=oldboystudent('豬哥',19,'male',1)

# print(stu1.__dict__)

## print(oldboystudent.mro())

python物件導向程式設計 繼承

物件導向三大特性 封裝根據職責將屬性和方法封裝到乙個抽象的類中 繼承實現 的重用,相同的 不需要重複的編寫 多型不同的物件呼叫相同的方法,產生不同的執行結果,增加 的靈活度 1 繼承的語法class 類名 父類名 pass2 專業術語 3 繼承的傳遞性 子類擁有父類以及父類的父類中封裝的所有屬性和方...

物件導向程式設計 繼承

繼承是物件導向程式設計的主要特點之一。繼承,顧名思義就是子繼承父的所有。在面向程式設計中繼承的意思並沒變,子類繼承父類所擁有的屬性 方法。使用extends關鍵字使子類繼承父類,子類就可以自動復用父類的方法了 私有方法除外 並且繼承了父類的所有屬性。在子類例項化過程中子類的構造方法一定會去呼叫父類的...

物件導向程式設計 繼承

一 簡介 1 繼承是軟體復用的一種方式,通過繼承,可以吸收現有類的資料和行為來建立新類,並增添新的效能增類。2 派生類顯示繼承的基類稱為直接基類,經兩級或者多級類層次繼承的類稱為間接基類。3 繼承的方式 public private protected 4 派生類一般不能直接訪問基類的private...