Python 程式設計基礎07 類 物件與魔法方法

2021-10-08 21:48:58 字數 2491 閱讀 7122

1.物件 = 屬性 + 方法

物件是類的例項。換句話說,類主要定義物件的結構,然後我們以類為模板建立物件。類不但包含方法定義,而且還包含所有例項共享的資料。

封裝:資訊隱蔽技術

我們可以使用關鍵字 class 定義 python 類,關鍵字後面緊跟類的名稱、分號和類的實現。

繼承:子類自動共享父類之間資料和方法的機制

多型:不同物件對同一方法響應不同的行動

2. self 是什麼?

python 的 self 相當於 c++ 的 this 指標。

類的方法與普通的函式只有乙個特別的區別 —— 它們必須有乙個額外的第乙個引數名稱(對應於該例項,即該物件本身),按照慣例它的名稱是 self。在呼叫方法時,我們無需明確提供與引數 self 相對應的引數。

3. python 的魔法方法

據說,python 的物件天生擁有一些神奇的方法,它們是物件導向的 python 的一切…

它們是可以給你的類增加魔力的特殊方法…

如果你的物件實現了這些方法中的某乙個,那麼這個方法就會在特殊的情況下被 python 所呼叫,而這一切都是自動發生的…

類有乙個名為__init__(self[, param1, param2…])的魔法方法,該方法在類例項化時會自動呼叫。

4. 公有和私有

在 python 中定義私有變數只需要在變數名或函式名前加上「__」兩個下劃線,那麼這個函式或變數就會為私有的了。

5. 繼承

baseclassname(示例中的基類名)必須與派生類定義在乙個作用域內。除了類,還可以用表示式,基類定義在另乙個模組中時這一點非常有用.

6. 組合

7. 類、類物件和例項物件

類物件:建立乙個類,其實也是乙個物件也在記憶體開闢了一塊空間,稱為類物件,類物件只有乙個。

例項物件:就是通過例項化類建立的物件,稱為例項物件,例項物件可以有多個。

類屬性:類裡面方法外面定義的變數稱為類屬性。類屬性所屬於類物件並且多個例項物件之間共享同乙個類屬性,說白了就是類屬性所有的通過該類例項化的物件都能共享。

例項屬性:例項屬性和具體的某個例項物件有關係,並且乙個例項物件和另外乙個例項物件是不共享屬性的,說白了例項屬性只能在自己的物件裡面使用,其他的物件不能直接使用,因為self是誰呼叫,它的值就屬於該物件。

8. 什麼是繫結?

python 嚴格要求方法需要有例項才能被呼叫,這種限制其實就是 python 所謂的繫結概念。

python 物件的資料屬性通常儲存在名為.__ dict__的字典中,我們可以直接訪問__dict__,或利用 python 的內建函式vars()獲取.__ dict__。

9. 一些相關的內建函式(bif)

issubclass(class, classinfo) 方法用於判斷引數 class 是否是型別引數 classinfo 的子類。

乙個類被認為是其自身的子類。

classinfo可以是類物件的元組,只要class是其中任何乙個候選類的子類,則返回true。

魔法方法總是被雙下劃線包圍,例如__init__。

魔法方法是物件導向的 python 的一切,如果你不知道魔法方法,說明你還沒能意識到物件導向的 python 的強大。

魔法方法的「魔力」體現在它們總能夠在適當的時候被自動呼叫。

魔法方法的第乙個引數應為cls(類方法) 或者self(例項方法)。

cls:代表乙個類的名稱

self:代表乙個例項物件的名稱

基本的魔法方法

init(self[, …]) 構造器,當乙個例項被建立的時候呼叫的初始化方法

算術運算子

型別工廠函式,指的是「不通過類而是通過函式來建立物件」。

反算術運算子

反運算魔方方法,與算術運算子保持一一對應,不同之處就是反運算的魔法方法多了乙個「r」。當檔案左操作不支援相應的操作時被呼叫。

增量賦值運算子

一元運算子

屬性訪問

描述符描述符就是將某種特殊型別的類的例項指派給另乙個類的屬性。

定製序列

協議(protocols)與其它程式語言中的介面很相似,它規定你哪些方法必須要定義。然而,在 python 中的協議就顯得不那麼正式。事實上,在 python 中,協議更像是一種指南。

迭代器迭代是 python 最強大的功能之一,是訪問集合元素的一種方式。

迭代器是乙個可以記住遍歷的位置的物件。

迭代器物件從集合的第乙個元素開始訪問,直到所有的元素被訪問完結束。

迭代器只能往前不會後退。

字串,列表或元組物件都可用於建立迭代器:

生成器在 python 中,使用了 yield 的函式被稱為生成器(generator)。

跟普通函式不同的是,生成器是乙個返回迭代器的函式,只能用於迭代操作,更簡單點理解生成器就是乙個迭代器。

在呼叫生成器執行的過程中,每次遇到 yield 時函式會暫停並儲存當前所有的執行資訊,返回 yield 的值, 並在下一次執行 next() 方法時從當前位置繼續執行。

呼叫乙個生成器函式,返回的是乙個迭代器物件。

python基礎 07 類與物件 魔方方法

1 概念 類 主要定義物件的結構,然後我們以類為模板建立物件。類不但包含方法定義,而且還包含所有例項共享的資料。物件 通過類定義的資料結構例項。物件包括兩個資料成員 類變數和例項變數 和方法。物件是類的例項 例項化 建立乙個類的例項,類的具體物件。方法 類中定義的函式。繼承 子類自動共享父類之間資料...

python物件導向程式設計基礎

python物件導向程式設計基礎 1 類的建立和例項化 2 繼承 多型 多重繼承 類的繼承是一種縱向的關係,def class baseclass class類繼承baseclass,擁有baseclass的屬性和方法 3 類的組合 類的組合是一種橫向關係 4 內部屬性 由於python語言沒有pu...

python物件導向程式設計基礎

一 基礎例項 class car def init self,make,model,year 初始化描述汽車的屬性 self.make make self.model model self.year year self.odometer reading 0 如果對屬性設定預設值,那麼括號裡面就不需要...