編程語言不斷涌現(xiàn),不同的方法也不斷涌現(xiàn)。面向?qū)ο蟮木幊叹褪沁@樣一種方法,在過去的幾年中變得非常流行。
本章講述了Python編程語言的特性,使其成為一種面向?qū)ο蟮木幊陶Z言。
Python可以在面向?qū)ο缶幊谭椒ㄕ撓逻M(jìn)行表征。 下圖顯示了各種編程語言的特性。 觀察使其面向?qū)ο蟮腜ython特性。
面向?qū)ο笠馕吨嫦驅(qū)ο蟆?換句話說,它意味著功能上針對建模對象。 這是用于通過數(shù)據(jù)和行為描述一系列交互對象來為復(fù)雜系統(tǒng)建模的眾多技術(shù)之一。
Python是面向?qū)ο缶幊?OOP),是一種編程方式,專注于使用對象和類來設(shè)計和構(gòu)建應(yīng)用程序。面向?qū)ο缶幊?OOP)的主要支柱是繼承,多態(tài),抽象和封裝。
面向?qū)ο蠓治?OOA)是檢查問題,系統(tǒng)或任務(wù)并識別它們之間的對象和相互作用的過程。
Python是用面向?qū)ο蟮姆椒ㄔO(shè)計的。 OOP提供以下優(yōu)點 -
基于程序的編程源于基于功能/過程/例程概念的結(jié)構(gòu)編程。 在面向程序的編程中訪問和更改數(shù)據(jù)很容易。 另一方面,面向?qū)ο缶幊?Object Oriented Programming,OOP)允許將問題分解成多個稱為對象的單元,然后在這些對象周圍構(gòu)建數(shù)據(jù)和函數(shù)。 它比過程或功能更強調(diào)數(shù)據(jù)。 在OOP中,數(shù)據(jù)也是隱藏的,不能被外部程序訪問。
下圖中的表格顯示了POP和OOP方法的主要區(qū)別。
程序化編程(POP)與程序化編程(POP)的區(qū)別。 面向?qū)ο缶幊?OOP)。
| 序號/項 | 程序化編程 | 面向?qū)ο缶幊?/th> |
|---|---|---|
| 基于 | 整個焦點集中在數(shù)據(jù)和函數(shù)上 | 基于真實世界的場景。整個程序劃分為稱為對象的小部分 |
| 可重用性 | 有限的代碼重用 | 代碼重用性高 |
| 途徑 | 自上而下的方法 | 面向?qū)ο蟮脑O(shè)計 |
| 訪問說明符 | 沒有 | public, private 以及 protected |
| 數(shù)據(jù)移動 | 數(shù)據(jù)可以從功能中自由移動到系統(tǒng)中的功能 | 在Oops中,數(shù)據(jù)可以通過成員函數(shù)進(jìn)行移動和相互通信 |
| 數(shù)據(jù)訪問 | 大多數(shù)功能使用全局?jǐn)?shù)據(jù)進(jìn)行共享,可以從系統(tǒng)中的功能自由訪問 | 數(shù)據(jù)不能在方法之間自由移動,它可以保存在公共或私人的位置,這樣就可以控制數(shù)據(jù)的訪問 |
| 數(shù)據(jù)隱藏 | 在流行中,隱藏數(shù)據(jù)的方式非常特殊,所以安全性稍差 | 它提供數(shù)據(jù)隱藏,更安全 |
| 重載 | 不可能 | 函數(shù)和運算符重載 |
| 示例語言 | C, VB, Fortran, Pascal | C++, Python, Java, C# |
| 抽象化 | 在過程級別使用抽象 | 在類和對象級別使用抽象 |
面向?qū)ο缶幊?Object Oriented Programming,OOP)是基于對象而不是動作的概念,以及數(shù)據(jù)而不是邏輯。 想要使編程語言成為面向?qū)ο?,它?yīng)該有一種機制來支持類和對象的使用,以及基本的面向?qū)ο笤瓌t和概念的實現(xiàn)和使用,即繼承,抽象,封裝和多態(tài)。

下面簡單了解面向?qū)ο缶幊痰母鱾€支柱 -
封裝
該屬性隱藏了不必要的細(xì)節(jié),并使管理程序結(jié)構(gòu)變得更加容易。 每個對象的實現(xiàn)和狀態(tài)都隱藏在明確定義的邊界之后,并為它們提供了一個干凈而簡單的界面。 實現(xiàn)這一目標(biāo)的一種方法是將數(shù)據(jù)保密。
繼承
繼承也稱為泛化,它允許我們捕獲類和對象之間的層次關(guān)系。 例如,“水果”是“橙色”的泛化。 從代碼重用的角度來看,繼承非常有用。
抽象化
這個屬性允許我們隱藏細(xì)節(jié),只顯示概念或?qū)ο蟮幕咎卣鳌?例如,駕駛滑板車的人知道在按喇叭時發(fā)出聲音,但不知道如何在按下喇叭時實際產(chǎn)生應(yīng)該是什么樣的聲音。
多態(tài)性
多態(tài)性意味著許多形式。 也就是說,某件事或行為是以不同的形式或方式呈現(xiàn)的。 多態(tài)的一個很好的例子是類中的構(gòu)造函數(shù)重載。
Python編程的核心是對象和OOP,但是您不需要通過將代碼組織到類中來限制自己使用OOP。 OOP增加了Python的整個設(shè)計理念,并鼓勵一種干凈而實用的編程方式。 面向?qū)ο筮€可以編寫更大更復(fù)雜的程序。
模塊就像“字典”,在使用模塊時,請注意以下幾點 -
__init__.py文件的文件夾中。import關(guān)鍵字導(dǎo)入。字典是一個鍵值對。 這意味著如果有一個關(guān)鍵的EmployeID字典,如果想檢索它,那么需要使用下面的代碼行 -
employee = {"EmployeID": "Employee Unique Identity!"}
print (employee ['EmployeID'])
可通過使用以下過程來處理模塊 -
.(點)運算符訪問該模塊中的函數(shù)或變量。考慮有一個名為employee.py的模塊,其中包含一個名為employee的函數(shù)。 該函數(shù)的代碼如下所示 -
# this goes in employee.py
def EmployeID():
print ("Employee Unique Identity!")
現(xiàn)在導(dǎo)入模塊,然后訪問函數(shù)EmployeID -
import employee
employee.EmployeID()
可以在其中插入名為Age的變量,如下所示 -
def EmployeID():
print ("Employee Unique Identity!")
# just a variable
Age = "Employee age is **"
現(xiàn)在,按照以下方式訪問該變量 -
import employee
employee.EmployeID()
print(employee.Age)
現(xiàn)在,我們來比較一下字典 -
Employee['EmployeID'] # get EmployeID from employee
Employee.employeID() # get employeID from the module
Employee.Age # get access to variable
請注意,Python中有常見的模式 -
key = value風(fēng)格的容器將模塊與字典進(jìn)行比較時,兩者都是相似的,除了以下內(nèi)容 -
[key]。.key。類就像模塊
模塊是一個專門的字典,可以存儲Python代碼,所以你可以用.操作符來獲得它。 類是一種對函數(shù)和數(shù)據(jù)進(jìn)行分組并將其放置在容器中的方式,以便您可以使用.操作符訪問它們。
如果要創(chuàng)建一個類似于員工模塊的類,則可以使用以下代碼執(zhí)行此操作 -
class employee(object):
def __init__(self):
self. Age = “Employee Age is ##”
def EmployeID(self):
print (“This is just employee unique identity”)
注 - 類比模塊更受歡迎,因為它可以按原樣重用它們,且不會受到太多干擾。 使用模塊時,整個程序只有一個。
對象就像小型的模塊
一個類就像一個迷你版本的模塊,可以用類似的方式導(dǎo)入類,就像使用類實例一樣。 請注意,當(dāng)實例化一個類時,會得到一個對象。
您可以實例化一個對象,類似于像函數(shù)一樣調(diào)用一個類,如圖所示 -
this_obj = employee() # Instantiatethis_obj.EmployeID() # get EmployeId from the class
print(this_obj.Age) # get variable Age
可以通過以下三種方式中的任何一種來執(zhí)行此操作 -
# dictionary style
Employee['EmployeID']
# module style
Employee.EmployeID()
Print(employee.Age)
# Class style
this_obj = employee()
this_obj.employeID()
Print(this_obj.Age)