在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Python/ Python面向?qū)ο蠛喗?/span>
文件和字符串
異常和異常類
Python面向?qū)ο蠛喗?/span>
面向?qū)ο蠼輳?/span>
對象序列化
數(shù)據(jù)結(jié)構(gòu)
開發(fā)環(huán)境設(shè)置
設(shè)計模式
類庫
構(gòu)建塊
繼承和多態(tài)
高級特性
Python面向?qū)ο蠼坛?/span>

Python面向?qū)ο蠛喗?/h1>

編程語言不斷涌現(xiàn),不同的方法也不斷涌現(xiàn)。面向?qū)ο蟮木幊叹褪沁@樣一種方法,在過去的幾年中變得非常流行。

本章講述了Python編程語言的特性,使其成為一種面向?qū)ο蟮木幊陶Z言。

編程語言規(guī)劃分類

Python可以在面向?qū)ο缶幊谭椒ㄕ撓逻M(jìn)行表征。 下圖顯示了各種編程語言的特性。 觀察使其面向?qū)ο蟮腜ython特性。

  • 編程范式
    • 過程程序,主要有 - C, C++, C#, Objective-C, java, Go
    • 腳本,主要有 - CoffeeScript, JavaScript, Python, Perl, Php, Ruby
    • 函數(shù)式,主要有 - Clojure, Eralang, Haskell, Scala
  • 編譯類
    • 靜態(tài),主要有 - C, C++, C#, Objective-C, java, Go, Haskell, Scala
    • 動態(tài),主要有 - CoffeeScript, JavaScript, Python, Perl, Php, Ruby, Clojure, - 類型類
    • 強類型,主要有 - C#, java, Go, Python, Ruby, Clojure, Erlang, Haskell, Scala
    • 弱類型,主要有 - C, C++, C#, Objective-C, CoffeeScript, JavaScript, Perl, Php
  • 內(nèi)存類
    • 托管,其它
    • 非托管,主要有 - C, C++, C#, Objective-C

什么是面向?qū)ο缶幊蹋?/h2>

面向?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ù)并識別它們之間的對象和相互作用的過程。

為什么選擇面向?qū)ο缶幊蹋?/h2>

Python是用面向?qū)ο蟮姆椒ㄔO(shè)計的。 OOP提供以下優(yōu)點 -

  • 提供清晰的程序結(jié)構(gòu),可以輕松映射真實世界的問題及其解決方案。
  • 便于維護和修改現(xiàn)有的代碼。
  • 由于每個對象都是獨立存在的,因此可以輕松添加新功能而不會打擾現(xiàn)有對象,從而增強了程序的模塊化。
  • 為代碼庫提供了一個很好的框架,供程序員輕松修改和修改提供的組件。
  • 賦予代碼可重用性

程序與面向?qū)ο缶幊?/h2>

基于程序的編程源于基于功能/過程/例程概念的結(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ū)ο缶幊淘?/h2>

面向?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面向?qū)ο?/h2>

Python編程的核心是對象和OOP,但是您不需要通過將代碼組織到類中來限制自己使用OOP。 OOP增加了Python的整個設(shè)計理念,并鼓勵一種干凈而實用的編程方式。 面向?qū)ο筮€可以編寫更大更復(fù)雜的程序。

模塊與類和對象

模塊就像“字典”,在使用模塊時,請注意以下幾點 -

  • Python模塊是封裝可重用代碼的包。
  • 模塊存儲在一個有__init__.py文件的文件夾中。
  • 模塊包含功能和類。
  • 模塊使用import關(guān)鍵字導(dǎo)入。

字典是一個鍵值對。 這意味著如果有一個關(guān)鍵的EmployeID字典,如果想檢索它,那么需要使用下面的代碼行 -

employee = {"EmployeID": "Employee Unique Identity!"}
print (employee ['EmployeID'])

可通過使用以下過程來處理模塊 -

  • 模塊是一個包含一些函數(shù)或變量的Python文件。
  • 導(dǎo)入需要的文件。
  • 現(xiàn)在,可以使用.(點)運算符訪問該模塊中的函數(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)格的容器
  • 通過鍵的名稱獲取某些內(nèi)容

將模塊與字典進(jìn)行比較時,兩者都是相似的,除了以下內(nèi)容 -

  • 在字典的情況下,鍵是一個字符串,語法是[key]。
  • 在模塊的情況下,鍵是一個標(biāo)識符,語法是.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)