Python 基礎(十一) 物件導向

2021-10-01 13:39:14 字數 3384 閱讀 9753

物件導向(oop)是一種對現實世界理解和抽象的方法,物件的含義是指在現實生活中能夠看得見摸得著的具體事物,一句比較經典的描述是一切皆物件,python 是一門物件導向的語言,物件導向程式設計簡單來說就是一種封裝**的方式。

物件導向相關概念

物件導向三大特性

python 中類的定義使用class關鍵字,語法如下所示:

class 類名:

屬性 ...

方法 .

..

比如我們定義乙個類 cat,如下所示:

class

cat:

# 屬性

color =

'black'

# 構造方法

def__init__

(self, name)

: self.name = name

# 自定義方法

defeat

(self, food)

: self.food = food

print

(self.name,

'正在吃'

+food)

構造方法__init__()會在類例項化時自動呼叫。無論構造方法還是其他方法都需要將self作為第乙個引數,它代表類的例項。

類建立好後,我們可以直接通過類名訪問屬性,格式為:類名.屬性名,比如我們訪問 cat 類的 color 屬性,如下所示:

print

('color-->'

, cat.color)

上面 cat 類中定義的屬性和方法都是公開的,除此之外我們還可以定義私有屬性和方法,宣告方式為:在屬性名或方法名前加兩條下劃線,示例如下所示:

class

cat:

__cid =

'1'def

__run

(self)

:pass

需要強調一點是:外部不能訪問私有屬性和呼叫私有方法,自然cat.__cid是會報錯的。

建立物件也稱類的例項化,比如我們通過 cat 類建立物件,如下所示:

# 建立物件

c = cat(

'tom'

)

建立好物件後,我們就可以使用它訪問屬性和呼叫方法了,如下所示:

# 訪問屬性

print

('name-->'

, c.name)

print

('color-->'

, c.color)

# 呼叫方法

c.eat(

'魚')

同樣物件c不能訪問私有屬性__cid及呼叫私有方法__run,那我們會有這樣乙個疑問,這個私有屬性和方法難道定義了卻不能用嗎?

我們來一起看個例子,如下所示:

class

cat:

__cid =

'1'def

__run

(self, speed)

:print

('__cid是'

+self.__cid+

'的貓'

,'以'

+speed+

'的速度奔跑'

)def

run(self, speed)

: self.__run(speed)

c.run(

'50邁'

)

輸出結果:

__cid是1的貓 以50邁的速度奔跑
通過示例我們可以看出,在內部私有屬性和方法是可以被訪問和呼叫的。

python 支援類的繼承,而且支援多繼承,語法格式為:

class 基類(子類1

, 子類2..

.):.

..

示例如下所示:

# 波斯貓類

class

persiancat

(cat)

:def

__init__

(self, name)

: self.name = name

defeat(self, food)

:print

(self.name,

'正在吃'

+food)

#加菲貓類

class

garfieldcat

(cat)

:def

__init__

(self, name)

: self.name = name

defrun(self, speed)

:print

(self.name,

'正在以'

+speed+

'的速度奔跑'

)# 單繼承

class

singlecat

(persiancat)

:pass

# 多繼承

class

multicat

(persiancat, garfieldcat)

:pass

#呼叫sc = singlecat(

'波斯貓1號'

)sc.eat(

'魚')

mc = multicat(

'波斯加菲貓1號'

)mc.eat(

'魚')

mc.run(

'50邁'

)

如果繼承的父類方法不能滿足我們的需求,這時子類可以重寫父類方法,如下所示:

class

singlecat

(persiancat)

:def

eat(self, food )

:print

(self.name,

'正在吃'

+food,

'十分鐘後'

, self.name+

'吃飽了'

)sc = singlecat(

'波斯貓1號'

)sc.eat(

'魚')

Python基礎知識十一 物件導向一

3 self引數 物件導向 語法 class 類名 父類 pass 定義乙個類 class myclass pass print myclass 使用 myclass來建立乙個物件 mc myclass mc就是通過myclass建立的物件,mc是myclass的例項 mc2 myclass mc3...

python物件導向(一) 物件導向基礎

物件導向是python中乙個重點知識,用物件導向的思想程式設計,有利於模組化 方便閱讀和後期的維護。面向過程 注重解決問題的步驟,讓問題根據步驟流程一步一步得到解決 物件導向 萬物皆物件,每個物件都有特徵和功能,物件間又可以相互作用 類 具有相同特徵或行為的事物的統稱 抽象的,不可直接使用 物件 物...

java基礎 一 物件導向

給物件的資料 屬性 進行初始化 具體步驟 1,student.class載入進記憶體 2,宣告乙個student型別引用s 3,在堆記憶體建立物件,4,給物件中屬性預設初始化值 5,屬性進行顯示初始化 6,構造方法進棧,對物件中的屬性賦值,構造方法彈棧 7,將物件的位址值賦值給sclass stud...