搜尋
首頁後端開發Python教學python是物件導向還是面向過程

python是物件導向還是面向過程

Jan 05, 2023 pm 04:54 PM
python物件導向

python是物件導向的。 Python語言在設計之初,就定位為一門物件導向的程式語言,「Python中一切皆物件」就是對Pytho 這門程式語言的完美詮釋。類別和物件是Python的重要特徵,相較於其它物件導向語言,Python很容易就可以創建出一個類別和物件;同時,Python也支援物件導向的三大特徵:封裝、繼承和多態。

python是物件導向還是面向過程

本教學操作環境:windows7系統、python3版,DELL G3電腦

Python雖然是解譯型語言,但Python 語言在設計之初,就定位為一門物件導向的程式語言,「Python 中一切皆物件」就是對Python 這門程式語言的完美詮釋。

什麼是物件導向

物件導向程式設計是在流程導向程式設計的基礎上發展來的,它比流程程式設計具有更強的靈活性和擴展性。物件導向程式設計是程式設計師發展的分水嶺,許多初學者會因為無法理解物件導向而放棄學習程式設計。

物件導向程式設計(Object-oriented Programming,簡稱 OOP),是一種封裝程式碼的方法。其實,在前面章節的學習中,我們已經接觸了封裝,比如說,將亂七八糟的資料扔進列表中,這就是一種簡單的封裝,是資料層面的封裝;把常用的程式碼區塊打包成一個函數,這也是一種封裝,是語句層面的封裝。

程式碼封裝,其實就是隱藏實作功能的具體程式碼,只留給使用者使用的接口,就好像使用計算機,使用者只需要使用鍵盤、滑鼠就可以實作一些功能,而根本不需要知道其內部是如何運作的。

物件導向編程,也是一種封裝的思想,不過顯然比以上兩種封裝更先進,它可以更好地模擬真實世界中的事物(將其視為物件),並把描述特徵的資料和程式碼區塊(函數)封裝在一起。

打個比方,若在某遊戲中設計一個烏龜的角色,該如何來實現呢?使用物件導向的想法會更簡單,可以分為如下兩個面向來描述:

  • 從表面特徵來描述,例如,綠色的、有4 條腿、重10 kg 、有外殼等等。

  • 從所具有的行為來描述,例如,它會爬、會吃東西、會睡覺、會將頭和四肢縮到殼裡,等等。

如果將烏龜用程式碼來表示,則其表面特徵可以用變數來表示,其行為特徵可以透過建立各種函數來表示。參考程式碼如下所示:

class tortoise:
    bodyColor = "绿色"
    footNum = 4
    weight = 10
    hasShell = True
    #会爬
    def crawl(self):
        print("乌龟会爬")
    #会吃东西
    def eat(self):
        print("乌龟吃东西")
    #会睡觉
    def sleep(self):
        print("乌龟在睡觉")
    #会缩到壳里
    def protect(self):
        print("乌龟缩进了壳里")

注意,以上程式碼僅是為了示範物件導向的程式設計思想。

因此,從某種程式上,相比較只使用變數或只使用函數,使用物件導向的想法可以更好地模擬現實生活中的事物。

不僅如此,在Python 中,所有的變數其實也都是對象,包括整形(int)、浮點型(float)、字串(str)、列表(list)、元組(tuple )、字典(dict)和集合(set)。以字典(dict)為例,它包含多個函數供我們使用,例如使用keys() 取得字典中所有的鍵,使用values() 取得字典中所有的值,使用item() 取得字典中所有的鍵值對,等等。

物件導向相關術語

在系統學習物件導向程式設計之前,初學者要了解一些關於物件導向的術語。當和其他人討論程式碼的時候,或嘗試尋找我們遇到的問題的解決方案時,知道正確的術語會很有幫助。

在物件導向中,常用術語包括:

  • 類別:可以理解是一個模板,透過它可以創造出無數個具體實例。例如,前面寫的 tortoise 表示的只是烏龜這個物種,透過它可以創造出無數個實例來代表各種不同特徵的烏龜(這個過程又稱為類別的實例化)。

  • 物件:類別並不能直接使用,透過類別建立的實例(又稱為物件)才能使用。這有點像是汽車圖紙和汽車的關係,圖紙本身(類)並不能為人們使用,透過圖紙創建出的一輛汽車(物件)才能使用。

  • 屬性:類別中的所有變數稱為屬性。例如,tortoise 這個類別中,bodyColor、footNum、weight、hasShell 都是這個類別擁有的屬性。

  • 方法:類別中的所有函數通常稱為方法。不過,和函數所有不同的是,類別方法至少要包含一個 self 參數(後續會做詳細介紹)。例如,tortoise 類別中,crawl()、eat()、sleep()、protect() 都是這個類別所擁有的方法,類別方法無法單獨使用,只能和類別的物件一起使用。

Python的物件導向特徵:

類別和物件是Python 的重要特徵,相較於其它物件導向語言,Python 很容易就可以創建出一個類別和物件。同時,Python 也支援物件導向的三大特徵:封裝、繼承和多型。

封裝

  物件導向程式設計中的術語物件(Object)基本上可以看做資料(特性)以及由一系列可以存取、操作這些數據的方法所組成的集合。傳統意義上的「程式=
資料結構 演算法」被封裝」掩蓋「並簡化為「程式=物件 訊息」。物件是類別的實例,類別的抽象則需要經過封裝。封裝可以讓呼叫者不用關心物件是如何建構的而直接進行使用。

繼承

  • 類別繼承:

      繼承給人的直接感覺是這是一種複用程式碼的行為。繼承可以理解為它是以普通的類別為基礎建立專門的類別對象,子類別和它繼承的父類別是IS-A的關係。

  • 多重繼承:

      不同於C#,Python是支援多重類別繼承的(C#可繼承自多個Interface,但最多繼承自一個類別)。多重繼承機制有時很好用,但是它容易讓事情變得複雜。

多態

  多態意味著可以對不同的物件使用相同的操作,但它們可能會以多種形態呈現出結果。在Python中,任何不知道物件到底是什麼類型,但又需要物件做點什麼的時候,都會用到多態。方法是多態的,運算子也是多型的。

【相關推薦:Python3影片教學

以上是python是物件導向還是面向過程的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
您如何切成python列表?您如何切成python列表?May 02, 2025 am 12:14 AM

SlicingaPythonlistisdoneusingthesyntaxlist[start:stop:step].Here'showitworks:1)Startistheindexofthefirstelementtoinclude.2)Stopistheindexofthefirstelementtoexclude.3)Stepistheincrementbetweenelements.It'susefulforextractingportionsoflistsandcanuseneg

在Numpy陣列上可以執行哪些常見操作?在Numpy陣列上可以執行哪些常見操作?May 02, 2025 am 12:09 AM

numpyallowsforvariousoperationsonArrays:1)basicarithmeticlikeaddition,減法,乘法和division; 2)evationAperationssuchasmatrixmultiplication; 3)element-wiseOperations wiseOperationswithOutexpliitloops; 4)

Python的數據分析中如何使用陣列?Python的數據分析中如何使用陣列?May 02, 2025 am 12:09 AM

Arresinpython,尤其是Throughnumpyandpandas,weessentialFordataAnalysis,offeringSpeedAndeffied.1)NumpyArseNable efflaysenable efficefliceHandlingAtaSetSetSetSetSetSetSetSetSetSetSetsetSetSetSetSetsopplexoperationslikemovingaverages.2)

列表的內存足跡與python數組的內存足跡相比如何?列表的內存足跡與python數組的內存足跡相比如何?May 02, 2025 am 12:08 AM

列表sandnumpyArraysInpythonHavedIfferentMemoryfootprints:listSaremoreFlexibleButlessMemory-效率,而alenumpyArraySareSareOptimizedFornumericalData.1)listsStorReereReereReereReereFerenceStoObjects,with withOverHeadeBheadaroundAroundaround64byty64-bitsysysysysysysysysyssyssyssyssysssyssys2)

部署可執行的Python腳本時,如何處理特定環境的配置?部署可執行的Python腳本時,如何處理特定環境的配置?May 02, 2025 am 12:07 AM

toensurepythonscriptsbehavecorrectlyacrycrosdevelvermations,分期和生產,USETHESTERTATE:1)Environment varriablesForsimplesettings,2)configurationfilesfilesForcomPlexSetups,3)dynamiCofforComplexSetups,dynamiqualloadingForaptaptibality.eachmethodoffersuniquebeneiquebeneqeniquebenefitsandrefitsandrequiresandrequiresandrequiresca

您如何切成python陣列?您如何切成python陣列?May 01, 2025 am 12:18 AM

Python列表切片的基本語法是list[start:stop:step]。 1.start是包含的第一個元素索引,2.stop是排除的第一個元素索引,3.step決定元素之間的步長。切片不僅用於提取數據,還可以修改和反轉列表。

在什麼情況下,列表的表現比數組表現更好?在什麼情況下,列表的表現比數組表現更好?May 01, 2025 am 12:06 AM

ListSoutPerformarRaysin:1)DynamicsizicsizingandFrequentInsertions/刪除,2)儲存的二聚體和3)MemoryFeliceFiceForceforseforsparsedata,butmayhaveslightperformancecostsinclentoperations。

如何將Python數組轉換為Python列表?如何將Python數組轉換為Python列表?May 01, 2025 am 12:05 AM

toConvertapythonarraytoalist,usEthelist()constructororageneratorexpression.1)intimpthearraymoduleandcreateanArray.2)USELIST(ARR)或[XFORXINARR] to ConconverTittoalist,請考慮performorefformanceandmemoryfformanceandmemoryfformienceforlargedAtasetset。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。