python學習筆記 繼承

2022-07-19 10:09:11 字數 1694 閱讀 4790

如果給定乙個list或tuple,我們可以通過for迴圈來遍歷這個list或tuple,這種遍歷成為迭代。

在python中,迭代是通過for...in來完成的。

使用for迴圈時,只要作用於乙個可迭代物件,for迴圈就可以正常執行。

在python中,一邊迴圈一邊計算的機制,稱為生成器:generator

如果乙個函式定義中包含yield關鍵字,那麼這個函式就不再是乙個普通函式,而是乙個generator

generator和函式的執行流程不一樣,函式時順序執行,遇到return語句或者最後一行函式語句就會返回。而變成generator的函式,在每次呼叫next()的時候執行,遇到yield語句返回,再次執行時從上次返回的yield語句處繼續執行。

凡是可以作用於for迴圈的物件都是iterable型別

凡是可作用於next()函式的物件都是iterator型別,它們表示乙個惰性計算的序列

集合資料型別時iterable但不是iterator,不過可以通過iter()函式獲得乙個iterator物件

函式會對引數序列中元素進行累積。

函式將乙個資料集合中的所有資料進行下列操作:用傳給reduce()中的函式function(有兩個引數),先對集合中的第1,2個元素進行操作,得到的結果再與第三個資料用function函式運算,最後得到乙個結果。

和map()類似,filter()也接收乙個函式和乙個序列。和map()不同的是,filter()把傳入的函式依次作用於每個元素,然後根據返回值是true還是false決定保留還是丟棄該元素。

在**執行期間動態增加功能的方式

本質上,裝飾器是乙個返回函式的高階函式。

當程式使用"@函式"裝飾另一函式時,實際完成如下兩步:

1.將被裝飾的函式作為引數傳給@符號引用的函式

2.將函式b替換成第一步的返回值

需要import functools

functools.partial的作用:把乙個函式的某些引數給固定住,返回乙個新的函式,呼叫這個新函式會更簡單。

自己建立的模組名不可以與python自帶的模組名衝突,否則將無法匯入系統模組

python以目錄組織模組,,稱為包(package),乙個abc.py的檔案就是乙個叫abc的模組,如果這個名稱與其他模組衝突,則可選擇乙個頂層包名,即建立上層目錄。

每個包目錄下必須有乙個__init.py__檔案,沒有這個檔案python會把它當成空目錄

正常命名的函式和變數名是public類,_ 開頭的是私有類(private)

init方法的第乙個引數只能是self,表示建立的例項本身

繼承可以把父類的所有功能都直接拿過來,再累只需要新增自己特有的方法,也可以把父類不適合的方法覆蓋重寫

動態語言的型別特點決定了繼承不像靜態語言那樣是必須的。

判斷乙個物件是否是函式:

import types

type(fn) == types.functiontype

isinstance([變數],[物件])

限制例項的屬性

class student(object):

__slots"__ = ("name","age")

s = student()

s.name = 'pri1s0n'

s.age = 20

使用__slots__定義的屬性僅對當前類例項起作用,對繼承的子類是不起作用的

python學習筆記 繼承和多型

程式設計中的繼承和多型其實跟生物學中的遺傳非常類似。例如兒子與父親相比較,有很多相同的地方,那麼這就是遺傳 但是父子間也有很多不一樣的地方,那麼這就是變異,也就是多型。python中的student類繼承了people類中的所有方法和屬性,那麼就有了people所有的屬性和方法。當然student也...

學習筆記17 Python 繼承

class 類名 父類名 class animal def eat self 在類中定義方法時,若該方法不涉及對屬性的操作 print 吃 pycharm會認為該方法是乙個靜態方法,而不是類方法 defdrink self print 喝 def run self print 跑 def sleep...

Python學習筆記(15) 繼承 多型

乙個類a擁有乙個類b的屬性和方法,類a稱作子類或派生類,類b稱作父類或基類 示例 class animal object def init self self.color 黑色 defrun self print 跑 class cat animal pass tom cat print tom.c...