Python筆記 Ch 12 物件導向

2021-10-19 10:23:26 字數 3872 閱讀 8333

乙個基礎的類定義

class

myclass

:"""這裡是類文件注釋"""

# 定義一些基本資料成員, 為public

# 這裡相當於static變數, 是可以直接通過類名訪問的

name =

"" age =

0# 定義一些私有屬性&方法, 為private

__weight =

0def

__privatefun()

:#do something

pass

# 初始化方法, 將在類物件建立時被呼叫

def__init__

(self)

:# 執行一些內容

pass

# 然後是一些類方法

deffun1

(self)

:pass

幾個注意點:

def關鍵字可以定義乙個方法, 但必須包含self引數, 且必須在第乙個

self引數無需顯式傳參, 在呼叫時可忽略

參考部落格:

c++中, 類資料成員即為靜態資料成員, 需要使用static訪問, 而物件資料成員跟隨物件繫結

python中:

class

derivedclassname

(baseclassname1, baseclassname2, baseclassname3)

:1>..

.

幾個注意點:

python支援多繼承

所以子類在使用基類的方法時, 若沒有顯式指定, 則將從左到右的從基類中搜尋匹配的方法名

如果基類中有重名方法名, 則需要注意這一點

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)

if __name__ ==

'__main__'

: test = sample(

"tim",25

,80,4

,"python"

) test.speak(

)

引用的基類必須與子類在同乙個作用域, 即可以被子類訪問到

若要引用其他模組中的類, 則可以使用.運算子

class

derivedclassname

(modname.baseclassname)

:

與c++相似, 在子類中定義乙個與基類相同名稱的方法會將基類中的方法覆蓋, 而後呼叫子類的該方法, 執行的便是子類中的定義

class

parent

:# 定義父類

defmymethod

(self)

:print

('呼叫父類方法'

)class

child

(parent)

:# 定義子類

defmymethod

(self)

:print

('呼叫子類方法'

)c = child(

)# 子類例項

c.mymethod(

)# 子類呼叫重寫方法

這玩意算是每個類中隱式呼叫的方法, 過載之後相當於c++的運算子operator過載

__init__ 		# 建構函式,在生成物件時呼叫

__del__ # 析構函式,釋放物件時使用

__repr__ # 列印,轉換

__setitem__ # 按照索引賦值

__getitem__ # 按照索引獲取值

__len__ # 獲得長度

__cmp__ # 比較運算

__call__ # 函式呼叫

__add__ # 加運算

__sub__ # 減運算

__mul__ # 乘運算

__div__ # 除運算

__mod__ # 求餘運算

__pow__ # 乘方

例子:

class

vector

:def

__init__

(self, a, b)

: self.a = a

self.b = b

def__str__

(self)

:return

'vector (%d, %d)'

%(self.a, self.b)

def__add__

(self, other)

:return vector(self.a + other.a, self.b + other.b)

if __name__ ==

'__main__'

: v1 = vector(2,

10)v2 = vector(5,

-2)print

(v1 + v2)

vector (7, 8)

補交課下測試(ch12併發程式設計) 08 第八周

有關執行緒圖,下面說法正確的是 a 圖的原點表示沒有任何執行緒完成一條指令的初始狀態 b 向右向上是合法的轉換 c 向左向下是合法的轉換 d 對角線是合法的轉換 e 乙個程式執行的歷史被模型化成狀態空間中的一條軌跡線 f 進度圖中,兩個臨界區的交集形成不安全區 正確答案 a b e f 下面 對於併...

python基礎筆記 12 物件導向一

先從類和物件說起 類是指物件的各種型別,又稱抽象物件 開發物件 通過類建立物件,又稱例項化物件 一類物件 通過同乙個類建立的物件 屬性 物件中的變數 自定義類 class 類名 塊class myclass pass print id myclass type myclass myclass 類物件...

筆記12 物件導向

物件導向 q 小明同學讀 三國 a 找物件 什麼是物件?在客觀世界中可以描述的物品 看得見,摸得著 小明 是什麼?人 人類中的乙個物件 三國 是什麼?書 書籍類中的乙個物件 在計算機中如何能夠描述小明和三國 string name 小明 int age char 可以讀書的 string booln...