上一講我們熟悉了物件和類的基本概念。這一講我們將進一步拓展,以便我們真正能實際運 用物件和類
上一講我們已經提到,在定義方法時,必須有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...