當前位置:
首頁 > 知識 > Python3快速入門知識點:面向對象

Python3快速入門知識點:面向對象

面向對象

類與對象是面向對象編程的兩個主要方面。一個(Class)能夠創建一種新的類型(Type),其中對象(Object)就是類的實例(Instance)。可以這樣來類比:你可以擁有類型 的變數,也就是說存儲整數的變數是 類的實例(對象)。

類(Class):用來描述具有相同的屬性和方法的對象的集合。它定義了該集合中每個對象所共有的屬性和方法。對象是類的實例。

方法:類中定義的函數。

類變數:類變數在整個實例化的對象中是公用的。類變數定義在類中且在函數體之外。類變數通常不作為實例變數使用。

數據成員:類變數或者實例變數用於處理類及其實例對象的相關的數據。

方法重寫:如果從父類繼承的方法不能滿足子類的需求,可以對其進行改寫,這個過程叫方法的覆蓋(override),也稱為方法的重寫。

實例變數:定義在方法中的變數,只作用於當前實例的類。

繼承:即一個派生類(derived class)繼承基類(base class)的欄位和方法。繼承也允許把一個派生類的對象作為一個基類對象對待。例如,有這樣一個設計:一個Dog類型的對象派生自Animal類,這是模擬"是一個(is-a)"關係(例圖,Dog是一個Animal)。

實例化:創建一個類的實例,類的具體對象。

對象:通過類定義的數據結構實例。對象包括兩個數據成員(類變數和實例變數)和方法。

Python 中的類提供了面向對象編程的所有基本功能:類的繼承機制允許多個基類,派生類可以覆蓋基類中的任何方法,方法中可以調用基類中的同名方法。

對象可以包含任意數量和類型的數據。


self

表示的是當前實例,代表當前對象的地址。類由 表示。

不是關鍵字,其他名稱也可以替代,但 是個通用的標準名稱。


類由 關鍵字來創建。

類實例化後,可以使用其屬性,實際上,創建一個類之後,可以通過類名訪問其屬性。


對象方法

方法由 關鍵字定義,與函數不同的是,方法必須包含參數 , 且為第一個參數, 代表的是本類的實例。


類方法

裝飾器 可以將方法標識為類方法。類方法的第一個參數必須為 ,而不再是 。


靜態方法

裝飾器 可以將方法標識為靜態方法。靜態方法的第一個參數不再指定,也就不需要 或 。


__init__ 方法

方法即構造方法,會在類的對象被實例化時先運行,可以將初始化的操作放置到該方法中。

如果重寫了 ,實例化子類就不會調用父類已經定義的 。


變數

(Class Variable)是共享的(Shared)——它們可以被屬於該類的所有實例訪問。該類變數只擁有一個副本,當任何一個對象對類變數作出改變時,發生的變動將在其它所有實例中都會得到體現。

(Object variable)由類的每一個獨立的對象或實例所擁有。在這種情況下,每個對象都擁有屬於它自己的欄位的副本,也就是說,它們不會被共享,也不會以任何方式與其它不同實例中的相同名稱的欄位產生關聯。

在 Python 中,變數名類似 的,也就是以雙下劃線開頭,並且以雙下劃線結尾的,是特殊變數,特殊變數是可以直接訪問的,不是 private 變數,所以,不能用 、 這樣的變數名。


訪問控制

私有屬性

:兩個下劃線開頭,聲明該屬性為私有,不能在類地外部被使用或直接訪問。

私有方法

:兩個下劃線開頭,聲明該方法為私有方法,只能在類的內部調用,不能在類地外部調用。

我們還認為約定,一個下劃線開頭的屬性或方法為的。比如,、。


繼承

類可以繼承,並且支持繼承多個父類。在定義類時,類名後的括弧中指定要繼承的父類,多個父類之間用逗號分隔。

子類的實例可以完全訪問所繼承所有父類的非私有屬性和方法。

若是父類中有相同的方法名,而在子類使用時未指定,Python 從左至右搜索,即方法在子類中未找到時,從左到右查找父類中是否包含方法。


方法重寫

子類的方法可以重寫父類的方法。重寫的方法參數不強制要求保持一致,不過合理的設計都應該保持一致。

函數可以調用父類的一個方法,以多繼承問題。


類的專有方法:

: 構造函數,在生成對象時調用

: 析構函數,釋放對象時使用

: 列印,轉換

: 按照索引賦值

: 按照索引獲取值

: 獲得長度

: 比較運算

: 函數調用

: 加運算

: 減運算

: 乘運算

: 除運算

: 求余運算

: 乘方

類的專有方法也支持重載。


實例

(左右滑動可查看完整代碼)

輸出:

面向對象完結


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 python 的精彩文章:

小白學Python,400G乾貨贈送!

TAG:python |