Python是一種物件導向程式語言
,從資料、變數到函式,都被視為「物件」(Object)來處理,物件包含以下元素
名稱
:用來稱呼這個物件資料型態
: 設定物件的用途唯一的id
: 用來區別不同物件值
:真正的資料內容參考計數
: 追蹤這物件被使用的頻率例如宣告一個變數x = 1
,在Python的設計觀點:
變數物件
,賦予名稱
為x
1
1
,此物件資料型態是integer
以上是Python內建的資料型別變數物件,在這個章節中,我們將介紹,使用者怎麼自訂物件,處理客製化資料。
物件(object)
是一種資料型態,由屬性(Attribute)
與方法(Method)
組成。
屬性以變數形式表示,一個物件可以包含多個屬性,例如一個多邊形物件的顏色、長度。
方法以函式來表示,一個物件可以包含多個函式,例如一個多邊形物件可以被計算面積、體積
類別(Class)
,就是用來建立物件的方法。
你必須定義類別,來指出一個物件包含哪些屬性跟方法。
例如你想定義一個銀行帳號的物件
通常也被稱為實例(Instance)
延續上面的程式碼,我們建立兩個帳號資料物件,分別是:
S00001
AAA
S00002
BBB
參考程式碼如下:
Python允許在物件生成階段,再進行屬性的定義,例如下方例子的第16, 17行。
請宣告一個class CRectangle
(長方形類別)
width
跟寬height
area(width, height)
,用來計算面積請使用此class,生成一個長寬2x3的rectangle1
物件,並且呼叫他的area
方法,輸出它的面積
我們從這個例子出發,有兩個class,都有drive
這個方法,根據物件導向設計原則,我們應該使用繼承
這個技巧,來優化程式碼,方便後續維護。
繼承作法如下,我們新增一個class
Transpotation,也就是交通工工具的類別,然後讓原本的兩個class
Car, Airplane繼承它,所以這兩個class都不用再實作自己的drive
方法了。
當子類別中定義了和父類別同名的方法(Method),這時候子類別的物件(Object)呼叫這個同名方法時,其中的實作內容將會覆蓋掉父類別的同名方法,這就叫做方法覆寫(Method Overriding),如下範例:
如果我們想在子類別中執行父類別的方法時,則可以使用super()
內建方法來達成,如下範例:
從執行結果可以看到,子類別透過super()
內建方法執行父類別的drive()
方法後,接著執行子類別的方法後續實作。
請創造一個class,CPolygon
多邊形
line1
, line2
area()
計算面積再宣告兩個class,CTriangle
與CRectangle
,繼承CPolygon
,各自實作自己的area()
進行面積計算。
CTriangle.area()
: 三角形面積公式CRectangle.area()
: 長方形面積公式請使用以上兩個class,各自生成物件triangle1(2,3)
和rectangle1(2,3)
,並且使用它們的方法,計算面積並輸出。
Python程式設計入門