python基礎 物件導向(六)類的繼承

2022-07-11 03:45:10 字數 2586 閱讀 4454

一.什麼是繼承?

繼承:類的繼承就跟現實生活一樣,父、子、孫。父類又稱為基類

繼承分為單繼承和多繼承

class

parent1:

pass

class

parent2:

pass

class son1(parent1): #

單繼承pass

class son2(parent1,parent2): #

多繼承pass

二.為什麼要繼承?

1 減少**冗餘、提高重用性(**重用就耦合了,這個不是重點)

2 歸一化設計。(相同的**有相同的功能,比如貓會吃喝拉撒,狗也會吃喝拉撒,定義基類,動物類,包含吃喝拉撒,是為了確保貓和狗都必須有吃喝拉撒,使用者一看到吃喝拉撒就知道是幹什麼的)

三.繼承了父類的什麼屬性?

資料屬性和函式屬性都繼承了。

class

dad:

money = 10

def__init__

(self, name):

self.name =name

defhit_son(self):

print('

%s正在打兒子

' %self.name)

class

son(dad):

pass

son1 = son('

alex')

print(son1.money) #

呼叫父類的資料屬性

son1.hit_son() #

呼叫父類的函式屬性

print(dad.__dict__

)print(son.__dict__)

四.什麼時候用繼承?

1.當類之間明顯不同,但又有關聯的時候用組合(如學校和老師)

2.當類之間有很多相同的功能,提取這些功能做成基類,用繼承(如貓吃喝拉撒,狗也吃喝拉撒。可以做個動物基類,吃喝拉撒)

五.介面繼承,歸一化設計

歸一化設計。相同的**有相同的功能,比如貓會吃喝拉撒,狗也會吃喝拉撒,定義基類,動物類,包含吃喝拉撒,是為了確保貓和狗都必須有吃喝拉撒,使用者一看到吃喝拉撒就知道是幹什麼的。

要求必須重寫,可以abc模組

import

abcclass animal(metaclass=abc.abcmeta):

@abc.abstractmethod

defchi(self):

pass

@abc.abstractmethod

defhe(self):

pass

defla(self):

pass

defsha(self):

pass

class

dog(animal):

defchi(self):

pass

defhe(self):

pass

dog1 = dog()

六.繼承順序

經典類(沒有繼承object的)是深度優先。新式類是廣度優先。新式類可用__mro__檢視

class

a:

pass

class

b(a):

pass

class

c(a):

pass

class

d(b):

pass

class

e(c):

pass

class

f(e, d):

pass

print(f.mro())

繼承順序:先子類後父類。同時繼承多個,先繼承寫在前面的

七.子類中呼叫父類方法

class

vehicle:

country = '

china

'def

__init__

(self, name, speed, power):

self.name =name

self.speed =speed

self.power =power

defrun(self):

print('

開動啦'

)class

subway(vehicle):

def__init__

(self, name, speed, power, line):

#vehicle.__init__(self, name, speed, power)

super().__init__

(self, name, speed, power)

self.line =line

subway1 = subway('

復興號', '

100m/s

', '

elc', '

19號線')

print(subway1.name, subway1.speed)

如果父類名字修改後,**都要改名字,為了避免這種情況,可使用super()代替父類的名字

c 物件導向(六) 類的方法(一)

方法與屬性作為類的最重要成員,這裡主要說明方法的宣告 方法的屬性 靜態方法 方法的過載。方法的宣告 修飾符 返回值資料型別 方法名稱 輸入引數的名稱 例如public int a int a return a 這個簡單的方法,public 公有的,返回值的型別是int,方法的名字叫做a,需要輸入乙個...

物件導向程式設計上機練習六(類和物件)

time limit 1000ms memory limit 65536kb submit statistic problem description 用類成員函式完成5個整型陣列元素的輸入 從小到大排序 排序後陣列元素的輸出。input 輸入5個陣列元素。output 輸出5個陣列元素從小到大排序...

物件導向程式設計上機練習六(類和物件)

time limit 1000ms memory limit 65536kb submit statistic problem description 用類成員函式完成5個整型陣列元素的輸入 從小到大排序 排序後陣列元素的輸出。input 輸入5個陣列元素。output 輸出5個陣列元素從小到大排序...