Python筆記09-魔法方法、屬性、迭代器

魔法方法: __future__ 、__init__ 、 __iter__

構造方法: __init__

析構方法: __del__

如果給構造方法多傳幾個參數:

 

構造函數( __init__(self) )中的語句在初始化的時候執行:

【成員訪問】

訪問器方法——能夠使用getHeight、setHeight這樣的名字重綁定一些特性[02.py]。

1.序列和映射 是對象的集合。如果對象是不可變的,那麼需要使用兩個魔法方法,如果是可變的則需要使用4個。

__len__(self): 返回集合中所含項目的數量。

__getitem__(self,key): 返回與所給鍵對應的值。

__setitem__(self,key,value): 按一定的方式存儲和key相關的value(只能爲可以修改的對象定義這個方法)。

__delitem__(self,key): 此方法在對一部分對象使用del語句時被調用,同時必須刪除和元素相關的鍵。

2. 當子類化一個內建類型(如list)的時候,就會間接地將object子類化,就會自動成爲新式類,可以使用像super函數這樣的特性了。

一個例子:帶有訪問計數的列表[01.py]:

 

4. property 函數

靜態方法: @staticmethod ;類成員方法: @classmethod [03.py]

【迭代器】 __iter__

迭代器具有next方法,不需要任何參數。

(1) 一個實現了 __iter__ 方法餓的對象是可迭代的,一個實現了next方法的對象是迭代器。[裴波納契數列舉例:04.py]

(2) 內建函數 iter 可以從可迭代的對象中獲得迭代器。

使用list構造方法可以顯式地將迭代器轉化爲列表[05.py]:

【生成器】

生成器是一種用普通的函數語法定義的迭代器。生成器是一個包含yield關鍵字的函數。

如下案例:打印出一個“列表的列表”(也就是二維)中的數字[06.py]:

2. 上面的案例是處理了兩層嵌套的循環,如果是任意層嵌套 或者 樹形結構的,就需要使用 遞歸 了[07.py ]。

 

 

【代碼】https://github.com/rxbook/study-python/tree/master/09

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章