**於
python使用類(class)和物件(object),進行物件導向(object-oriented programming,簡稱oop)的程式設計。
物件導向的最主要目的是提高程式的重複使用性。我們這麼早切入物件導向程式設計的原因是,python的整個概念是基於物件的。了解oop是進一步學習python的關鍵。
在人類認知中,會根據屬性相近把東西歸類,並且給類別命名。比如說,鳥類的共同屬性是有羽毛,通過產卵生育後代。任何乙隻特別的鳥都在鳥類的原型基礎上的。
物件導向就是模擬了以上人類認知過程。在python語言,為了聽起來酷,我們把上面說的「東西」稱為物件(object)。
classbird(object):
h**e_feather=true
way_of_reproduction='
egg'
我們定義了乙個類別(class),就是鳥(bird)。在隸屬於這個模擬的語句塊中,我們定義了兩個變數,乙個是有羽毛(h**e_feather),乙個是生殖方式(way_of_reproduction),這兩個變數對應我們剛才說的屬性(attribute)。括號中的object,當括號中為object時,說明這個類沒有父類(到頭了)
假設有乙隻小鳥,名叫summer。它是乙個物件,是乙隻鳥類。使用前面定義的類:
summer=bird()print(summer.way_of_reproduction)
通過第一句建立物件,並說明summer是類別鳥中的乙個物件,summer就有了鳥的類屬性,對屬性的引用是通過 物件.屬性(object.attribute) 的形式實現的。
日常認知中,我們在通過屬性識別類別的時候,有時根據這個東西能做什麼事情來區分類別。比如說,鳥會移動。這樣,鳥就和房屋的類別區分開了。這些動作會帶來一定的結果,比如移動導致位置的變化。
這樣的一些「行為」屬性為方法(method)。python中通過在類的內部定義函式,來說明方法。
classbird(object):
h**e_feather=true
way_of_reproduction='
egg'
defmove(self,dx,dy):
position=[0,0]
position[0]=position[0]+dx
position[1]=position[1]+dy
return
position
summer=bird()
print('
after move:
',summer.move(5,8))
我們重新定義了鳥這個類別。鳥新增乙個方法屬性,就是表示移動的方法move。
(它的引數中有乙個self,它是為了方便我們引用物件自身。方法的第乙個引數必須是self,無論是否用到。有關self的內容會在下一講展開)
另外兩個引數,dx, dy表示在x、y兩個方向移動的距離。move方法會最終返回運算過的position。
在最後呼叫move方法的時候,我們只傳遞了dx和dy兩個引數,不需要傳遞self引數(因為self只是為了內部使用)。
類別本身還可以進一步細分成子類
比如說,鳥類可以進一步分成雞,大雁,黃鸝。
在oop中,我們通過繼承(inheritance)來表達上述概念。
classchicken(bird):
way_of_move='
walk
'possible_in_kfc=true
class
oriole(bird):
way_of_move='
fly'
possible_in_kfc=false
spring=chicken()
(spring.h**e_feather)
print(spring.move(5,8))
print(spring.way_of_move)
新定義的雞(chicken)類的,增加了兩個屬性:移動方式(way_of_move),可能在kfc找到(possible_in_kfc)
在類定義時,括號裡為了bird。這說明,chicken是屬於鳥類(bird)的乙個
子類,即chicken繼承自bird。自然而然,bird就是chicken的
父類chicken將享有bird的所有屬性
python 面對物件 繼承
私有屬性和方法通過在屬性和方法名前新增 得到。私有屬性和方法是物件的隱私,不能通過外界和子類直接訪問 在外界無法訪問到私有屬性和方法 不能直接print列印 可以通過在物件的方法內部訪問私有屬性 子類物件可以通過父類的公有方法間接訪問到私有屬性或私有方法 eg classa def init sel...
python 面對物件 類
一.類體 類體一般有兩部分組成 變數部分,也叫靜態變數,靜態欄位.方法 函式 部分.class person 類體 兩部分 變數部分,方法 函式 部分 mind 有思想 變數,靜態變數,靜態字段 animal 高階動物 faith 有信仰 def init self,name,age,hobby s...
python遇到物件 python 面對物件基礎
物件導向基礎 物件導向程式設計 抽象 回顧一下 面向過程程式設計 思想 流水線優點 邏輯清晰 邏輯一步步的,系統 物件導向程式設計 思想 物件 特徵和技能的結合體 面對物件程式設計 乙個個物件進行互動 優點 擴張性非常強 缺點 邏輯非常複雜 類與物件 類 類別 一系列具有相同特徵和技能的物件 現實世...