這期內容當中小編將會給大家帶來有關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上述就是小編為大家分享的Python面向對象編程了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。