Python入門篇 物件導向(第二部分)

2022-07-04 13:39:09 字數 3580 閱讀 1799

python同樣有限的支援多繼承形式。多繼承的類定義形如下例:

class

derivedclassname(base1, base2, base3):

. .

.

需要注意圓括號中父類的順序,若是父類中有相同的方法名,而在子類使用時未指定,python從左至右搜尋 即方法在子類中未找到時,從左到右查詢父類中是否包含方法。

demo1 單獨呼叫父類: 

乙個子類同時繼承自多個父類,又稱菱形繼承、鑽石繼承。 

使用父類名.init(self)方式呼叫父類時:

class

parent(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 執行速度...