Python Class專題 二 類的方法

2021-09-23 01:57:31 字數 4154 閱讀 2228

每日一語:每一次相遇,都是靈魂在共鳴!

小亮的部落格:

——2019.5.19於北洋

在類的內部,使用 def 關鍵字來定義乙個方法,與一般函式定義不同,類方法必須包含引數 self, 且為第乙個引數,self 代表的是類的例項。

#!/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)

)# 例項化類

p = people(

'runoob',10

,30)p.speak(

)

執行以上程式輸出結果為:
runoob 說: 我 10 歲。
python 同樣支援類的繼承,如果一種語言不支援繼承,類就沒有什麼意義。派生類的定義如下所示:
class

derivedclassname

(baseclassname1)

:1>..

.

需要注意圓括號中基類的順序,若是基類中有相同的方法名,而在子類使用時未指定,python從左至右搜尋,即方法在子類中未找到時,從左到右查詢基類中是否包含方法。baseclassname(示例中的基類名)必須與派生類定義在乙個作用域內。除了類,還可以用表示式,基類定義在另乙個模組中時這一點非常有用:
class derivedclassname(modname.baseclassname):
#!/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))

s = student(

'ken',10

,60,3

)s.speak(

)

執行以上程式輸出結果為:
ken 說: 我 10 歲了,我在讀 3 年級
python同樣有限的支援多繼承形式。多繼承的類定義形如下例:
class

derivedclassname

(base1, base2, base3)

:1>..

.

需要注意圓括號中父類的順序,若是父類中有相同的方法名,而在子類使用時未指定,python從左至右搜尋。即方法在子類中未找到時,從左到右查詢父類中是否包含方法。
#!/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
python同樣有限的支援多繼承形式。多繼承的類定義形如下例:
#!/usr/bin/python3

class

parent

:# 定義父類

defmymethod

(self)

:print

('呼叫父類方法'

)class

child

(parent)

:# 定義子類

defmymethod

(self)

:print

('呼叫子類方法')

c = child(

)# 子類例項

c.mymethod(

)# 子類呼叫重寫方法

super

(child,c)

.mymethod(

)#用子類物件呼叫父類已被覆蓋的方法

super() 函式是用於呼叫父類(超類)的乙個方法。執行以上程式輸出結果為:

呼叫子類方法

呼叫父類方法

Python class類轉字典

有時候會需要從包裝的類裡面取出需要的資料,但有不能直接取出來 可以通過如下 把class轉換成字典 將class轉dict,以 開頭的也要 defprops with obj pr for name in dir obj value getattr obj,name ifnot name.start...

Python class 類 裝飾器

class father def init self,name self.name name print name s self.name defgetname self return father self.name class son father def getname self return...

二類查詢(中興筆試)

乙個經銷商將能量飲科以34整司罐的形式配送給客戶,其中每個客戶都有乙個與其相關的id。初始狀態下,每位商戶擁有的飲料數量均為0他根據飲料的需求配送飲料,他開發了個處理商店所有交易查詢的系統。該系統將處理兩種型別的查詢,即查詢1和查詢2。查詢1更新客戶購買的飲料數量,如果已經有給定id的條目,則通過傳...