詳解Python物件導向程式設計之類、例項、方法
物件導向程式設計
程式導向程式設計:Procedure Oriented Programming,簡稱POP。在之前的介紹中,多是用程式導向的思想。程式導向的思想是一種是事件為中心的程式設計思想,即分析出解決問題所需的步驟,然後用函式把這寫步驟實現,把大塊函式切成小塊函式,並按順序呼叫。
物件導向程式設計:Object Oriented Programming,簡稱OOP。物件導向的思想就是以物件為中心的程式設計思想,程式的執行過程就是一系列資訊在各個物件之間傳遞的過程。
什麼是物件?在Python中,一切的資料型別都可視為物件,“萬物皆物件”。
類 Class
Class,類,是物件導向程式設計最重要的概念之一。類是抽象的模板,而例項就是根據類建立出來的物件。比如:
類 | 例項 |
---|---|
杯子 | 馬克杯、玻璃杯、高腳杯... |
動物 | 貓、狗、兔子... |
電器 | 冰箱、電視、空調... |
類的定義
在Python中,透過class關鍵字來定義一個類:
class Animal(object): pass
Animal是類名,類名一般以大寫字母開頭,後面( )表示該類從哪一類繼承,若沒有合適的繼承類,就用object,因為所有類都會繼承該類,繼承是物件導向的三大特徵之一,後面會介紹。
類的屬性
完成了類的定義之後,我們可以定義類的屬性,如:
class Animal(object): name = 'animal'
呼叫其屬性時,用“物件名.屬性名”的形式來呼叫,如:
>>>Animal.name animal
例項 Instance
Instance,例項,是物件導向程式設計最重要的概念之一。例項就是根據類建立出來的物件。事實上,物件導向程式設計就是對“類”和“例項”的使用。
例項的定義
有了類之後,就可以根據類來定義對應的例項。
>>>dog = Animal()>>>dog <__main__.Animal object at 0x0000000001DB8780>
上面dog就是Animal的一個例項,後面的0x0000000001DB8780便是記憶體地址。
例項的屬性
同樣的,我們可以定義例項的屬性
>>>dog.name = 'dog' >>>dog.name dog
由於類是例項的一個模板,一般而言,我們在定義類的時候就可以把對應例項的屬性給繫結上去。這需要在類裡面定義一個__init__方法(方法類似於函式,在後面會介紹),如
class Animal(object): name = 'animal' def __init__(self,name,age): self.name = name self.age = age
注意到__init__方法的第一個引數永遠是self,表示建立例項本身,self就是指向例項的,隨後加入需要的引數。這樣在建立例項時就要輸入對應的引數了,但是self引數不需要輸入,因為Python直譯器自己會把例項變數傳進去。
>>>dog = Animal('dog',3) >>>dog.name dog >>>dog.age 3
需要注意的是,例項可以訪問到其類的屬性,如我們將dog的name屬性刪掉再呼叫。
>>>del dog.name >>>dog.name animal
可見,在dog訪問了Animal的name屬性,而當dog有name屬性時則優先訪問dog的屬性。
方法
方法可以理解成在類中定義的函式,與函式不同的一點是,方法的第一個引數一定是self,而其他與函式相同,同樣可以用預設引數、可變引數、關鍵字引數和命名關鍵字引數。
上面的__init__就是一個方法,當然,我們還能定義其他的方法,比如我們在Animal中增加一個say方法:
class Animal(object): name = 'animal' def __init__(self,name,age): self.name = name self.age = age def say(self): print('wow...wow')
可以透過例項來呼叫方法,形式是“例項名.方法名(引數)”,如
>>>dog = Animal('dog',3) >>>dog.say() wow...wow
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2558/viewspace-2837114/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Python - 物件導向程式設計 - 例項方法、靜態方法、類方法Python物件程式設計
- Python - 物件導向程式設計 - 什麼是 Python 類、類物件、例項物件Python物件程式設計
- Python - 物件導向程式設計 - 類變數、例項變數/類屬性、例項屬性Python物件程式設計變數
- python之物件導向程式設計(一)Python物件程式設計
- 圖解python | 物件導向程式設計圖解Python物件程式設計
- Python學習之物件導向程式設計Python物件程式設計
- Python學習之路——類-物件導向程式設計Python物件程式設計
- Python 物件導向程式設計Python物件程式設計
- Python物件導向程式設計Python物件程式設計
- Python - 物件導向程式設計 - __new()__ 和單例模式Python物件程式設計單例模式
- Kotlin 物件導向程式設計 (OOP) 基礎:類、物件與繼承詳解Kotlin物件程式設計OOP繼承
- python-程式導向、物件導向、類Python物件
- Python - 物件導向程式設計 - @propertyPython物件程式設計
- Python物件導向程式設計(1)Python物件程式設計
- Python - 物件導向程式設計 - super()Python物件程式設計
- Python OOP 物件導向程式設計PythonOOP物件程式設計
- python技能--物件導向程式設計Python物件程式設計
- Python進階之物件導向(類的特殊方法)Python物件
- Python學習之物件導向高階程式設計Python物件程式設計
- Python如何設計物件導向的類(下)Python物件
- Python如何設計物件導向的類(上)Python物件
- 章10——物件導向程式設計(高階部分)——類名類方法物件程式設計
- 14 Python物件導向程式設計:反射Python物件程式設計反射
- python物件導向程式設計基礎Python物件程式設計
- 史上最全 Python 物件導向程式設計Python物件程式設計
- python基礎(物件導向程式設計)Python物件程式設計
- JavaScript設計模式之物件導向程式設計JavaScript設計模式物件程式設計
- Python - 物件導向程式設計 - MRO 方法搜尋順序Python物件程式設計
- 課時37:類與物件:物件導向程式設計物件程式設計
- Python - 物件導向程式設計 - 三大特性之繼承Python物件程式設計繼承
- Python 物件導向程式設計之封裝的藝術Python物件程式設計封裝
- Python物件導向多型實現原理及程式碼例項Python物件多型
- 物件導向程式設計物件程式設計
- 10 Python物件導向程式設計:類和物件以及和Java的對比Python物件程式設計Java
- [翻譯]返回導向程式設計例項入門程式設計
- python物件導向之抽象工廠設計模式Python物件抽象設計模式
- Javascript 設計模式之物件導向與 UML 類圖JavaScript設計模式物件
- Java物件導向記憶體分析詳解(例項、圖)通俗易懂Java物件記憶體