此篇是紀錄學習Python 2.5的心得,主要討論Python中的類別(Class),專業說法是物件導向程式(Object-Oriented Programming)。
Python的物件導向有幾項需要注意的:
- Python所有的資料型態(data type)都是物件(objects)。
- 所有的類別成員(class member)都是公開(public)成員,意思是每個物件中的屬性都可以去存取使用它。
- 成員函數是虛擬(virtual)函數,子類別都可以去繼承複寫(override)父類別的函數,而且各自呼叫各類別的函數,即子類別呼叫子類別的函數,父類別呼叫父類別的函數。
- 沒有特別的建構子(constructors )和解構子(destructors)
- 一個類別可以繼承(inherit)多個父類別。
- 類別裡面的函數宣告,第一個參數一定是self關鍵字。
以下幾點簡述Python的物件導向。
1.類別定義語法Class Definition Syntax
用關鍵字class來定義一個類別,一定要在使用之前先定義喔!別忘了在類別名稱(ClassName)之後加上冒號(colon),類別中的每個敘述(statement)不需要用分號(semiclolon)結束,
class ClassName: statement_1 statement_2 . . . statement_N
2.類別物件Class Objects
類別物件可以有兩個方式來使用,(1)屬性參考(2)類別實例。屬性參考(Attribute references) 的使用方式為點語法,在Python中類似指標用法的觀念,例如ClassName.AttributeName
或者
ClassName.FunctionName
而類別實例(Class instantiation)則使用函數的宣告用法,就是使用圓括弧(parenthesis)的方式,這會將類別實體化,產生物件回傳給變數,例如這樣
variableObject=ClassName()
傳統上(什麼用詞阿...)來說,類別實例的時候會去呼叫所謂的建構子(Constructor)的函數來將類別實體化成為物件,然而在Python中則是去呼叫類別中的「def __init__(self):」這個函數。
3.實體物件(Instance Objects)
類別實體化成物件之後,我們就可以開始使用了,使用的方式是採用上述「屬性參考」的方法,目前跟一般的OOP的使用方式差不多,例如variableObject=ClassName()產生物件以後,你可以:
- 資料的存取使用
variableObject. AttributeName - 函數的呼叫
variableObject.FunctionName
4.方法物件(Method Objects)
這裡就要注意一下,Pyhton中所有東西都是物件,因此函數也不例外,所以程式裡面寫
ClassName.FunctionName #函數物件function object
和
variableObject=ClassName() variableObject.FunctionName #方法物件method object
的意義有些不一樣。因為在Python當中,呼叫方法的時候,實際上是把物件丟過去,注意到函數定義時的self引數,variableObject.FunctionNam等於ClassName.FunctionName(variableObject)。
5.類別的繼承(Inheritance)
Python中類別繼承的語法如下,注意到,Python可以繼承多個父類別,而不是用介面(Interface)
class DerivedClassName(BaseClassName): #單一繼承 statement_1 statement_2 . . statement-N class DerivedClassName(Base1, Base2, Base3): #多重繼承 statement_1 statement_2 . . statement-N
沒有留言:
張貼留言