python物件導向的進一步拓展(09)

2021-10-01 15:33:28 字數 2418 閱讀 9553

上一講我們熟悉了物件和類的基本概念。這一講我們將進一步拓展,以便我們真正能實際運 用物件和類

上一講我們已經提到,在定義方法時,必須有self這一引數,這個引數指的是物件。由於對 象擁有類的所有性質,那麼我們就可以在方法內部通過self來呼叫類的其它屬性。

class

human

(object

):

laugh =

'hahahaha'

defshow_laugh

(self)

:print self.laugh

deflaugh_100th

(self)

:for i in

range

(100

):

self.show_laugh(

)li_lei = human(

)# 李雷

li_lei.laugh_100th(

)

我們這裡有乙個變數屬性laugh,在方法show_laugh()中通過self.laugh使用該屬性的值。方法show_laugh則在laugh_100th中通過self.show_laugh()被呼叫。 (通過物件來修改類屬性是危險的,這樣可能會影響根據這個類定義的所有物件的這一屬 性!!)

init()是乙個特殊方法(special method)。python裡會有一些特殊方法,python會以特別 的方式處理它們。特殊方法的名字的特點是前後都有兩個下劃線。

init()方法的特殊在於,如果你在類中定義了這個方法,一旦你根據這個類建立物件,python就會自動呼叫這個方法(這個過程也叫初始化)。(在上一講中,我們手動呼叫 了move()方法)

class

(bird)

:def

__init__

(self,more_words)

:print

,more_words

)

螢幕上列印出:

summer.__init__(more_words)

)的引數more_words

上一講我們講了變數屬性和方法屬性。要注意,這些屬性是類的屬性。所有屬於乙個類的對 象都會共享這些屬性。比如說,鳥都有羽毛,雞都不會飛。

在一些情況下,我們需要用到物件的性質。比如說,人是乙個類別,我們知道,性別是人類 的乙個性質,但並不是所有的人類都是男性或者所有的人類都是女性。這個性質的值會隨著 物件的不同而不同。(李雷是人類的乙個物件,性別是男;韓美美也是人類的乙個物件,性 別是女)。

從上一講中,我們已經知道了,當定義類的方法時,必須要傳遞乙個self的引數。這個引數 指代的就是類的乙個物件。當然,這是乙個很模糊的乙個概念。但一旦我們用類來新建乙個 物件(比如說我們下面例子中的li_lei), 那麼li_lei就是self所代表的東西。我們已經知道 了,li_lei會擁有human類的屬性。進一步,我們通過賦值給self.attribute,給li_lei這一物件 增加一些性質(比如說性別)。由於self強制傳遞給各個方法,方法可以通過引用 self.attribute很方便地查詢到這些性質,並進行進一步的操作。

這樣,我們在類的屬性統一的基礎上,又給每個物件增添了各自特色的性質,從而能描述多 樣的世界。

class

human

(object):

def__init__

(self, input_gender)

:

self.gender = input_gender

defprintgender

(self)

:print self.gender

li_lei = human(

'male'

)# 這裡,'male'作為引數傳遞給__init__()方法的input_gender變數。

print li_lei.gender

li_lei.printgender(

)

首先,在初始化中,將引數input_gender賦值給物件li_lei的性質gender。(上一講,我們已 經提到,self指示的是物件, 也就是li_lei) 我們發現,li_lei擁有了屬性gender。在類human的定義中,並沒有這樣乙個變數屬性。

python是在建立了li_lei這一物件之後,專門為li_lei建立的屬性。我們稱此為物件的性質。(也有人以類屬性,物件屬性來區分)。

物件的性質也可以被其它方法呼叫,正如我們在printgender方法中所看到的那樣。

通過self呼叫類屬性

init(): 在建立物件時自動執行

類屬性和物件的性質的區別

Python基礎09 物件導向的進一步拓展

我們熟悉了物件和類的基本概念。我們將進一步拓展,以便能實際運用物件和類。呼叫類的其它資訊 上一講中提到,在定義方法時,必須有self這一引數。這個引數表示某個物件。物件擁有類的所有性質,那麼我們可以通過self,呼叫類屬性。class human object laugh hahahaha def ...

Python 4 物件導向的進一步拓展

我們講到了許多屬性,但這些屬性是類的屬性。所有屬於該類的物件會共享這些屬性。比如說,鳥都有羽毛,雞都不會飛。在一些情況下,我們定義物件的性質,用於記錄該物件的特別資訊。比如說,人 person 這個類。性別是某個人的乙個性質,不是所有的人類都是男,或者都是女。這個性質的值隨著物件的不同而不同。李晨是...

Python基礎09 物件導向的進一步拓展

我們熟悉了物件和類的基本概念。我們將進一步拓展,以便能實際運用物件和類。上一講中提到,在定義方法時,必須有self這一引數。這個引數表示某個物件。物件擁有類的所有性質,那麼我們可以通過self,呼叫類屬性。class human object laugh hahahaha def show laug...