python同樣有限的支援多繼承形式。多繼承的類定義形如下例:
classderivedclassname(base1, base2, base3):
. .
.
需要注意圓括號中父類的順序,若是父類中有相同的方法名,而在子類使用時未指定,python從左至右搜尋 即方法在子類中未找到時,從左到右查詢父類中是否包含方法。
demo1 單獨呼叫父類:
乙個子類同時繼承自多個父類,又稱菱形繼承、鑽石繼承。
使用父類名.init(self)方式呼叫父類時:
classparent(object):
def__init__
(self, name):
self.name =name
print('
parent的init結束被呼叫')
class
son1(parent):
def__init__
(self, name, age):
parent.
__init__
(self, name)
self.age =age
print('
son1的init結束被呼叫')
class
son2(parent):
def__init__
(self, name, gender):
parent.
__init__
(self, name)
self.gender =gender
print('
son2的init結束被呼叫')
class
grandson(son1, son2):
def__init__
(self, name, age, gender):
son1.
__init__(self, name, age) #
單獨呼叫父類的初始化方法
son2.__init__
(self, name, gender)
print('
grandson的init結束被呼叫')
gs = grandson('
grandson
', 12, '
男')
執行結果:
parent的init結束被呼叫son1的init結束被呼叫
parent的init結束被呼叫
son2的init結束被呼叫
grandson的init結束被呼叫
demo2:
#!/usr/bin/python3
#類定義
class
people:
#定義基本屬性
name = ''
age =0
#定義私有屬性,私有屬性在類外部無法直接進行訪問
__weight =0
#定義構造方法
def__init__
(self,n,a,w):
self.name =n
self.age =a
self.
__weight =w
defspeak(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
#覆寫父類的方法
defspeak(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
defspeak(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
如果你的父類方法的功能不能滿足你的需求,你可以在子類重寫你父類的方法,例項如下:
#!/usr/bin/python3
class parent: #
定義父類
defmymethod(self):
print ('
呼叫父類方法')
class child(parent): #
定義子類
defmymethod(self):
print ('
呼叫子類方法')
c = child() #
子類例項
c.mymethod() #
子類呼叫重寫方法
super(child,c).mymethod() #
用子類物件呼叫父類已被覆蓋的方法
輸入結果:
呼叫子類方法呼叫父類方法
__private_attrs:兩個下劃線開頭,宣告該屬性為私有,不能在類的外部被使用或直接訪問。在類內部的方法中使用時self.__private_attrs。
在類的內部,使用 def 關鍵字來定義乙個方法,與一般函式定義不同,類方法必須包含引數 self,且為第乙個引數,self 代表的是類的例項。
self 的名字並不是規定死的,也可以使用 this,但是最好還是按照約定是用 self。
__private_method:兩個下劃線開頭,宣告該方法為私有方法,只能在類的內部呼叫 ,不能在類的外部呼叫。self.__private_methods
python基礎物件導向 上(入門篇 九)
2.類3.類的定義 4.引數self 5.總結 自己定義乙個類 使用class關鍵字來定義 語法 class 類名 塊 class myclass pass m myclass m是通過myclass建立的物件 m是myclass的例項 m2 myclass m2也是通過myclass建立的物件 m...
第二章 入門篇
windows 平台先安裝 python pyqt eric安裝配置 中有介紹 linux 或 mac os x 平台下安裝,不多講解 參閱 安裝法,在 linux 平台可能包括如下步驟 tar xzvf django tar.gz cddjango sudo python setup.py ins...
第二章 MySQL入門篇
簡言 和sql server資料庫相同,mysql也是乙個關係型資料庫管理系統。由瑞典的mysql ab公司開發,2008年被sun公司收購,2009年,sun公司被oracle公司收購,因此兩個主流資料庫均為oracle公司所有。b 企業版 enterprise 收費版本,由技術支援。1 執行速度...