Python 簡明教程 ---18,Python 面向對象

代碼能借用就借用。

—— Tom Duff

目錄

在這裏插入圖片描述

編程可分爲面向過程編程面向對象編程,它們是兩種不同的編程方式,當然背後的思維方式也是不同的。面向過程編程是一種傳統的編程方式,面向對象編程是一個更高級的編程方式。

1,面向過程編程

面向過程編程(POP)的重點在於過程二字。

面向過程比較好理解,就是按照人們通常的思維方式,在做一件事情的時候,將這件事情劃分爲多個步驟,一步一步來做。

面向過程編程,就是在進行一個項目時,將這個項目分爲多個小的步驟,一個步驟就是一個過程,將這些過程全部組織起來,就形成了完整的項目。

C 語言是典型的面向過程編程語言

比如,我們可以將我要去北京這件事情分爲以下四個步驟:

  1. 去高鐵站
  2. 購買高鐵票
  3. 持票上高鐵
  4. 坐高鐵到北京

這裏的每個步驟相當於一個過程,我們將這些過程封裝成函數,然後,從前到後將這些函數組織起來,就完成了我要去北京這件事情。

我們將這個過程用簡單的代碼實現如下,將該代碼保存在to_beijing.py 文件中:

#! /usr/bin/env python3

def to_high_station():
    print('我到了高鐵站')

def buy_rail_tickets():
    print('我買了高鐵票')

def geton_high_rail():
    print('我坐上了高鐵')

def to_beijing():
    print('我到了北京')

if __name__ == '__main__':

    to_high_station()
    buy_rail_tickets()
    geton_high_rail()
    to_beijing()

在控制檯執行命令,如下:

$ python3 to_beijing.py 
我到了高鐵站
我買了高鐵票
我坐上了高鐵
我到了北京

2,面向對象編程

面向對象思想

面向對象編程(OOP)的重點在與對象二字,主要的編程思想是圍繞對象展開。

在思考一個項目的時候,將項目中的重要點/關鍵點都設計成一個個的,每個類承擔着不同的工作,不同的功能被歸納到不同的類中。然後,由類產生出對象,這些對象之間的相互作用,最終組成了一個完整的項目。

類與對象

面向對象編程中的兩個非常重要概念是對象也是代碼複用的一種機制。

前面我們講到過,函數模塊都是代碼複用的機制。

代表一類有着相同特徵事物,是一個抽象的概念。由同一個類產生的對象,有着相同的特性。比如人類都會行走,會使用工具,需要呼吸和喝水,這都是人類的共性。

對象產生,是一個類的實例,創建對象的過程,叫做類的實例化。對象是具體的,而不是抽象的。同一類的不同對象,也有不同的屬性。比如人類,有不同的性別,姓名和年齡等,這都是人類的不同屬性。

設計模式是對面向對象編程的寶貴經驗的歸納總結,讓我們可以更方便的運用面向對象的思想來進行編程工作。

面嚮對象語言

Java 語言是完全的面向對象編程語言,因爲所有的步驟都在中進行。

C++ 語言是半面向對象編程語言,它被稱爲帶類的 C,即支持面向過程編程,又支持面向對象編程。

Python 語言是一門腳本語言,以簡單優雅爲設計理念,即可以面向過程編程,也可以面向對象編程,但不像C++ 語言那樣有太多的複雜枯燥的概念,Python 語言更注重實用性。

面向對象三大特徵

封裝繼承多態是面向對象的三大特徵,這三種特徵都是面向對象編程語言自身提供的機制,可以讓我們更方便的進行面向對象程序設計:

  • 封裝:讓用戶可以訪問需要的方法,禁止訪問不必要的方法,屏蔽了類內部的複雜性。
  • 繼承:使得子類可以繼承父類的代碼,也是一種代碼複用手段,增強了類與類之間的邏輯結果關係。同時,繼承也是多態的必要條件。
  • 多態:一個事物(對象)可以表現多種形態,多態是面向對象編程中,一個非常強大的特性。

面向對象編程

我們仍然以我要去北京這件事來說明,用面向對象編程是如何實現的。

面向對象編程的重點在於類的設計,如何將一個大的項目,拆分爲不同的,必要的類。類的功能是單一的,而不是將不同的功能糅雜到一個類中。

首先,我們需要設計出一個,比如類名叫作SomeOne,這個至少需要有四項功能:

  • 去高鐵站
  • 購買高鐵票
  • 持票上高鐵
  • 坐高鐵到北京

我們需要將這四項功能,寫成四個方法,放在類SomeOne 中,代碼如下:

#! /usr/bin/env python3

# 定義一個類
class SomeOne:

    # 構造函數
    def __init__(self, name):
        self.name = name

    def to_high_station(self):
        print('%s 到了高鐵站' % self.name)

    def buy_rail_tickets(self):
        print('%s 買了高鐵票' % self.name)

    def geton_high_rail(self):
        print('%s 坐上了高鐵' % self.name)

    def to_beijing(self):
        print('%s 到了北京' % self.name)

if __name__ == '__main__':

    # 創建一個類的對象
    i = SomeOne('小明')

    i.to_high_station()
    i.buy_rail_tickets()
    i.geton_high_rail()
    i.to_beijing()

將該代碼寫在文件SomeOne.py 中,在控制檯執行命令,如下:

$ python3 SomeOne.py 
小明 到了高鐵站
小明 買了高鐵票
小明 坐上了高鐵
小明 到了北京

在上面的代碼中,我們定義了一個名叫SomeOne 的類,其中包含了我們需要的四個方法,另外還有一個__init__ 的方法,這是類的構造函數(後續我們會詳細講解)。

__main__ 代碼塊中,我們創建了SomeOne 類的對象i,並調用了該對象的四個方法。

下一節,我們來詳細介紹類與對象

(完。)


推薦閱讀:

Python 簡明教程 ---13,Python 集合

Python 簡明教程 ---14,Python 數據結構進階

Python 簡明教程 ---15,Python 函數

Python 簡明教程 ---16,Python 高階函數

Python 簡明教程 ---17,Python 模塊與包


歡迎關注作者公衆號,獲取更多技術乾貨。

碼農充電站pro

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章