python 同樣支援類的繼承,如果一種語言不支援繼承,類就沒有什麼意義。派生類的定義如下所示:
class derivedclassname(baseclassname1):
baseclassname(示例中的基類名)必須與派生類定義在乙個作用域內。除了類,還可以用表示式,基類定義在另乙個模組中時這一點非常有用:
class derivedclassname(modname.baseclassname):
例題:
class people:
name = ' '
age = 0
__weight = 0 #定義私有屬性,私有屬性在類外部無法直接進行訪問
def __init__(self,n,a,w): #定義構造方法
self.name = n
self.age = a
self.__weight = w
def speak(self):
print("%s 說: 我 %d 歲。" %(self.name,self.age))
class student(people): #單繼承示例
grade = ' '
def __init__(self,n,a,w,g): #呼叫父類的構函
people.__init__(self,n,a,w)
self.grade = g #覆寫父類的方法
def speak(self):
print("%s 說: 我 %d 歲了,我在讀 %d 年級"%(self.name,self.age,self.grade))
s = student('ken',10,60,3)
s.speak()
輸出結果為:
ken 說: 我 10 歲了,我在讀 3 年級
python同樣有限的支援多繼承形式。多繼承的類定義形如下例:
class derivedclassname(base1, base2, base3):
需要注意圓括號中父類的順序,若是父類中有相同的方法名,而在子類使用時未指定,python從左至右搜尋 即方法在子類中未找到時,從左到右查詢父類中是否包含方法。
例題:
class people:
name = ' '
age = 0
__weight = 0 #定義私有屬性,私有屬性在類外部無法直接進行訪問
def __init__(self,n,a,w): #定義構造方法
self.name = n
self.age = a
self.__weight = w
def speak(self):
print("%s 說: 我 %d 歲。" %(self.name,self.age))
#單繼承示例
class student(people):
grade = ' '
def __init__(self,n,a,w,g): #呼叫父類的構函
people.__init__(self,n,a,w)
self.grade = g #覆寫父類的方法
def speak(self):
print("%s 說: 我 %d 歲了,我在讀 %d 年級"%(self.name,self.age,self.grade))
#另乙個類,多重繼承之前的準備
class speaker():
topic = ' '
name = ' '
def __init__(self,n,t):
self.name = n
self.topic = t
def speak(self):
print("我叫 %s,我是乙個演說家,我演講的主題是 %s"%(self.name,self.topic))
#多重繼承
class sample(speaker,student):
a =' '
def __init__(self,n,a,w,g,t):
student.__init__(self,n,a,w,g)
speaker.__init__(self,n,t)
test = sample("tim",25,80,4,"python")
test.speak() #方法名同,預設呼叫的是在括號中排前地父類的方法
輸出結果:
我叫 tim,我是乙個演說家,我演講的主題是 python
第九章 類的重用
一 什麼是繼承?1 繼承是類與類間的關係。2 是一種什麼 是 什麼的關係。3 繼承功能就是用來解決 重用的問題。1 繼承 是一種建立新類的方式,python中,1 新建的類可以繼承乙個或多個父類。2 父類可以成為基類或超類。3 所新建的類稱為子類或派生類。2 類繼承的數量 python中類的繼承分為...
第九章 聚類
目錄聚類的方法 效能度量 距離計算 k means演算法 學習向量量化 密度聚類 層次聚類 聚類任務,簡而言之就是無監督學習,訓練資料沒有標籤,目的是為了分類。現實生活中常常會有這樣的問題 缺乏足夠的先驗知識,因此難以人工標註類別或進行人工類別標註的成本太高。很自然地,我們希望計算機能代我們完成這些...
第九章 聚類 Clustering
unsupervised learning 無監督學習 訓練樣本的標記資訊是未知的,通過對無標記資料的訓練來找出資料內部所存在的規律以及性質 為進一步的資料分析打下基礎 知識點 聚類過程中會自動的形成簇結構,但是演算法對簇 cluster 沒有概念,這是在運算過程中自己出現的聚類現象,這個簇的名字需...