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

微信公眾號:碼農充電站pro

個人主頁:https://codeshellme.github.io

代碼能借用就借用。

—— 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

posted @ 2020-06-26 09:21  碼農充電站  閱讀(28)  評論(0編輯  收藏
最新chease0ldman老人