一.什麼是繼承?
繼承:類的繼承就跟現實生活一樣,父、子、孫。父類又稱為基類
繼承分為單繼承和多繼承
class二.為什麼要繼承?parent1:
pass
class
parent2:
pass
class son1(parent1): #
單繼承pass
class son2(parent1,parent2): #
多繼承pass
1 減少**冗餘、提高重用性(**重用就耦合了,這個不是重點)
2 歸一化設計。(相同的**有相同的功能,比如貓會吃喝拉撒,狗也會吃喝拉撒,定義基類,動物類,包含吃喝拉撒,是為了確保貓和狗都必須有吃喝拉撒,使用者一看到吃喝拉撒就知道是幹什麼的)
三.繼承了父類的什麼屬性?
資料屬性和函式屬性都繼承了。
classdad:
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__檢視
classa:
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())
繼承順序:先子類後父類。同時繼承多個,先繼承寫在前面的
七.子類中呼叫父類方法
classvehicle:
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個陣列元素從小到大排序...