首頁 > 後端開發 > Python教學 > 【Python學習】物件導向的編程

【Python學習】物件導向的編程

little bottle
發布: 2019-04-09 09:27:35
轉載
2255 人瀏覽過

#以過程為導向的程式設計把電腦程式視為一系列的指令集合,也就是一組函數的順序執行。為了簡化程式設計,以過程將函數繼續切割成子函數,也就是把大塊函數透過切割成小塊函數來降低系統的複雜度。

python和java都是物件導向的語言。物件導向程式設計的特點資料封裝、繼承和多型
1.類別和實例
物件導向最重要的概念就是類別(Class)和實例(Instance ),必須牢記類別是抽象的模板,例如Student類,而實例是根據類別創建出來的一個個具體的“物件”,每個物件都擁有相同的方法,但各自的資料可能不同。
在python中,定義類別同樣也是使用class關鍵字,class後面緊跟著的是類名,需要開頭大寫,之後的括號裡表示的是繼承的哪個類,即它的父類。

class Student(object):
    pass
登入後複製

我們可以自由地給這個變數綁定屬性

>>>nick.name = 'Liu Ling Hao'
>>>nick.name
'Liu Ling Hao'
登入後複製

而之後定義的不同的函數則是方法。總結來說物件=屬性 方法
由於類別可以起到模板的作用,因此,可以在創建實例的時候,把一些我們認為必須綁定的屬性強制填寫進去。此時就需要用到比較特殊的__init__方法。 (int 前後各有兩個底線)
__init__方法的第一個參數永遠是self,表示建立的實例本身。

class Student(object):
    def __init__(self, name, score):
        self.name = name
        self.score = scor
>>> bart = Student('Bart Simpson', 59)
>>> bart.name
'Bart Simpson'
>>> bart.score
59
登入後複製

當有了__init__方法之後,在建立實例的時候,就不能傳入空的參數了,必須傳入與__init__方法匹配的參數
2.封裝,繼承和多態
物件導向程式設計的一個重要特點是資料封裝。
就像上面例子中的name和score,我們可以直接在類別的內部定義的函數去訪問,例如可以添加一個資料或對於一個列表進行排序,我們可以實現,但我們並不知道它的內部是透過如何調節而實現的。

當我們定義一個class的時候,可以從某個現有的class繼承,新的class稱為子類別(Subclass),而被繼承的class稱為基底類別、父類或超類別(Base class、Super class)。

繼承的好處就是獲得了父類別的全部功能,對於子類別而言,可以在父類別的基礎上接著寫,更加方便

class Person(object):
    def idea(self):
        print('study is happy')class Liu(Person):
    pass
liu =Liu()liu.idea

study is happy
登入後複製

當然子類別如果有和父類別同樣的方法時會自動覆寫父類別的

多態:不同物件對同一方法回應不同的行動

>>>class Nick1:
    def name(self):
          	 print("我是1")
>>>class Nick2:
    def name(self):
    		 print("我是2") 
>>>a = Nick1()
>>>b = Nick2()
>>>a.name
我是1
>>>b.name
我是2
登入後複製

使用的函數名稱雖然一樣但是實作並不一樣。

def run(animal):
    animal.run()
    animal.run()
    >>> run(Animal())
Animal is running...
Animal is running...
>>> run_twice(Dog())
Dog is running...
Dog is running...
登入後複製

多態的好處就是,當我們需要傳入Dog或其它動物時,我們只需要接收Animal類型就可以了,因為Dog都是Animal類型,然後,按照Animal類型進行操作即可。由於Animal類型有run()方法,因此,傳入的任意類型,只要是Animal類別或子類,就會自動呼叫實際類型的run()方法,這就是多態。

【推薦課程:Python影片教學

以上是【Python學習】物件導向的編程的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:csdn.net
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板