魔法方法: __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 ]。