python面向物件程式設計初學者指南

為了充分利用Python的優勢,您需要了解Python如何與面向物件程式設計(OOP)一起工作。...

Python應用於從Raspberry Pi到機器學習的所有領域。但是,如果您想處理任何大型項目,您需要知道Python如何與面向對象編程(OOP)結合使用。本文將介紹您需要了解的基本知識。

beginner-python-programming

如果你不是真正的編程愛好者,為什麼不看看這些最好的montypython草圖呢?畢竟,他們確實激發了語言!

等等,python不是真正的語言?

讓我們弄清楚一件事:Python是一種真正的編程語言,它很流行,而且正在迅速發展。僅僅因為它讀起來像偽代碼,而且你可以用它在Pi上編寫Minecraft,這並不意味著你應該把它當作一種較低級的語言。

面向對象編程(OOP)是現代軟件開發的基石,Python完全可以跟上這一潮流。它可能會做一件或兩件事不同於其他主流語言,但不要讓你拖延。

object-oriented programming guide for python

本教程將假定您瞭解Python的基本知識,但我們將在此過程中介紹所有複雜的內容。如果你是Python新手,為什麼不看看這些技巧來學習一種新的編程語言,或者看看一個簡單的項目,比如用Python讀寫googlesheets?

python前提條件和設置

在開始之前,您可能希望安裝Python開發環境。我們將使用python3.6.5,雖然您可以使用較舊的版本,但是如果您使用的是一個相當新的版本,那麼接下來的問題將更少。

如果您還沒有虛擬環境,您將希望創建一個虛擬環境,如果未安裝PIP for Python(不過,它與大多數現代Python安裝一起)。一旦你有了這些設置,你就可以走了。我們開始吧!

python的基礎:類

類是OOP的基本構建塊。一個班級就像一個計劃或藍圖。它們定義對象的特性。例如,如果你有一個汽車類,它可能會說明有四個輪子,至少一個座位和一個引擎。

下面介紹如何使用Python創建類:

class Vehicle: """ This class defines vehicles. """ pass

很簡單吧?這裡發生了一些事情。注意班上最上面的評論。這是一個稱為docstring的特殊註釋。它應該解釋一下你的代碼。通過使用三個引號(“”),可以告訴Python這是一個docstring。

pass關鍵字告訴Python什麼都不做。這是一個特殊的詞,你可以把它想象成一個待辦事項。它會讓你的代碼運行,但實際上什麼都沒做。

如果運行此代碼,您將看到不會發生任何事情。您需要實例化類。這實際上意味著基於類中定義的計劃去構建對象。您可以創建任意多個副本,每個副本具有不同的屬性。以下是您的做法:

red_car = Vehicle()

如果你再運行一次,你會發現什麼也沒發生。代碼工作正常,但您沒有讓它做任何明顯的事情。Vehicle類定義了一輛車的藍圖,最新的一行創建了一個Vehicle對象,並給它起了一個red\u car的名字。

可以**任意數量的對象:

red_car = Vehicle()green_car = Vehicle()blue_car = Vehicle()

讓我們再添加一些代碼。向Vehicle類添加一個名為\uuuu init \uuuu的方法:

class Vehicle: """ This class defines vehicles. """ def __init__(self, color='plain'): """ Setup some custom car properties """ print('New car made!') self.color = colorred_car = Vehicle()green_car = Vehicle()blue_car = Vehicle()

請特別注意這個初始化方法。它必須以兩個下劃線開頭和結尾。這是Python中的一個特殊方法。當您創建一個新對象時,它會自動被調用。運行此代碼將顯示“新車**!”三次。

object-oriented programming guide for python

最後,init接受一個名為color的自定義參數。緊跟其後的等號和字符串告訴Python,如果未指定,則將顏色設置為“plain”。您可以修改實例以在創建時設置汽車顏色:

red_car = Vehicle(color='red')green_car = Vehicle(color='green')blue_car = Vehicle(color='blue')

如果打印汽車顏色,您會看到每個實例都有不同的顏色,即使所有三個都是按照相同的規範(類)**的。Python允許您訪問幾乎任何變量或對象——不允許使用其他語言執行以下操作:

print(red_car.color)print(green_car.color)print(blue_car.color)

object-oriented programming guide for python

這是因為您將顏色指定給自身顏色. Self是Python中的另一個特殊關鍵字,它引用類的每個特定實例。無論何時使用self,都可以設置或訪問該實例特有的數據。例如,這輛紅色的汽車有一種紅色。

修改\uuuu init \uuuuu方法以將汽車噪音存儲在一個變量中:

self.noise = 'Vroooom'

要打印汽車噪音,可以訪問噪音變量,就像使用顏色一樣,但這不是最好的方法。如果當你開車的時候,你想同時運行一些其他的代碼,也許是你還沒寫的代碼呢?或者如果你想在將來改變汽車的駕駛方式呢?通過創建一個函數(也稱為方法),您可以嚴格控制事物的工作方式。將此添加到您的\uuuu init \uuuuuuuu方法下面:

def drive(self): print(self.noise)

您可以非常簡單地調用此方法:

red_car.drive()

object-oriented programming guide for python

無論何時調用drive方法,Python都會打印聲音。您可以將其展開以執行所有任務,但暫時保持原樣。

做得好!到現在為止,你應該已經牢牢掌握了基礎知識。您應該能夠創建和使用自己的類,每個類都有自己獨特的能力和功能。

python中的私有變量呢?

私有對象在大多數其他語言中非常常見。它們只是不能在類外訪問的變量或函數。它們可能是需要在使用前滿足特殊條件的代碼,或者只是為內部使用而設計的。不管是什麼原因,實例不能訪問私有成員。。。除非你是用Python編寫代碼。

Python沒有私有成員。相反,Python依賴於一個榮譽系統:“我們都是同意的成年人。”Python程序員理解,您可能需要修補類的敏感內部,這沒關係,因此任何東西都不應該真正無法訪問。

然而,Python確實有一個公認的約定,將某些變量標記為“private”,意思是“這個變量是供內部使用的,您可能不需要碰它。”約定是在變量名前面加下劃線:

_some_secret_variable = 42

這是對其他程序員的警告。Python不會阻止您訪問它,但是下劃線告訴您,它不是設計成這樣使用的,您應該繼續使用,風險自負。

有時這是Python修補隱藏內容的方法,但是您可能會冒著事情可能無**常工作的風險。

理解python中的繼承

繼承是減少重複和重用代碼的另一種方法。考慮到父級和子級的關係,繼承允許子級與父級共享公共代碼。讓我們實現一個電動汽車,它繼承自父代。

將此代碼添加到車輛類別以下:

class ElectricCar(Vehicle): """ Electric vehicle class. """ def charge(self): print('Zzz')electric_car = ElectricCar()electric_car.charge()electric_car.noise = 'Whoosh'electric_car.drive()

object-oriented programming guide for python

定義電動汽車後,車輛等級在兩個支架內指定。這告訴Python電動車是車輛的孩子。這使它能夠訪問車輛中提供的所有數據和方法。

電動汽車有其獨特的方法。它可以充電(其他車輛無法充電)。通過改變汽車噪音,然後駕駛,你可以看到電動車發出不同的聲音,你不必定義駕駛方法。這是因為驅動器是從父級繼承的。

進一步擴展python知識

這些例子展示了在Python中OOP是多麼容易。我們只討論了最基本的東西,但一旦你把它們記下來,剩下的就簡單了。

如果您希望繼續學習Python,或者將這些OOP技能付諸實踐,那麼為什麼不看看Python中的數組和列表,或者讓Python和JavaScript進行通信呢?

如果所有這些都讓您想要更多,那麼不要忘記查看這些最好的網站來學習Python。

  • 發表於 2021-03-24 14:43
  • 閱讀 ( 59 )
  • 分類:程式設計

你可能感興趣的文章

菲律賓比索(php)和python(python)的區別

關鍵區別——php與python PHP和Python是兩種流行的程式語言。PHP和Python的關鍵區別在於PHP專門用於web開發,而Python則用於web開發並作為一種通用程式語言。 PHP是一種為web開發而設計的伺服器端指令碼語言。Python是一種用於通用程...

  • 發佈於 2020-10-18 23:19
  • 閲讀 ( 52 )

perl公司(perl)和python(python)的區別

關鍵區別–perl與python 計算機程式為計算機執行任務提供指令。一組指令被稱為計算機程式。計算機程式是用程式語言開發的。高階語言程式設計師可以理解,但計算機卻不能理解。因此,這些程式被轉換成機器可理解的格式...

  • 發佈於 2020-10-19 17:38
  • 閲讀 ( 42 )

紅寶石(ruby)和python(python)的區別

關鍵區別——ruby與python Ruby和Python是高階程式語言,因為它們遵循與英語語言相似的語法。因此,程式設計師很容易理解這些語言。Ruby和Python都是解釋語言。兩種語言都有大量的社群支援。Ruby和Python的一個主要優點是這些語...

  • 發佈於 2020-10-19 17:41
  • 閲讀 ( 58 )

r(r)和python(python)的區別

關鍵區別——r與python R是一種高階程式語言,是統計分析和報告的軟體環境。Python是一種高階通用程式語言。因此,R和Python的關鍵區別在於R是一種面向統計的程式語言,而Python是一種通用的程式語言。R可用於統計計算、機...

  • 發佈於 2020-10-20 09:33
  • 閲讀 ( 56 )

python(python)和c語言(c language)的區別

python(python)和c語言(c language)的區別 程式語言允許人類為計算機建立一組有意義的指令來執行任務。Python和C是兩種高階程式語言。Python和C語言的關鍵區別在於Python是一種多正規化語言,C是一種結構化程式語言。本文討論了每...

  • 發佈於 2020-10-24 05:03
  • 閲讀 ( 57 )

5節課,成為一名真正優秀的自學程式設計師

...所以他知道你來自哪裡。從基礎知識開始,然後深入瞭解Python。然後,揭開硬體概念,最後用大資料和人工智慧來完善它。 ...

  • 發佈於 2021-03-12 09:53
  • 閲讀 ( 54 )

9個最好的pi程式設計資源,把你的樹莓pi使用

... 三。編寫raspberry pi:python入門 ...

  • 發佈於 2021-03-14 03:57
  • 閲讀 ( 53 )

用這些免費的線上互動式shell在瀏覽器中試用python

如果您正在考慮學習Python,那麼您可能會被初始設定過程弄得不知所措。您需要在系統上安裝Python,然後學習如何使用命令列處理程式碼,或者學習如何使用互動式shell,或者學習如何設定pythonide。 ...

  • 發佈於 2021-03-15 00:25
  • 閲讀 ( 56 )

初學者最容易學習的6種程式語言

... python ...

  • 發佈於 2021-03-16 10:37
  • 閲讀 ( 66 )

透過我的5門頂級課程真正學習javascript

...ootstrap和WordPress建立互動式網站。高階課程包括使用PHP7、Python和MySQL的伺服器端編碼。 ...

  • 發佈於 2021-03-17 09:52
  • 閲讀 ( 62 )