13.13.3 迭代器(randseq和anyiter)
1.randseq
>>> from random import choice >>> class randseq(object): ... def __init__(self, seq): ... self.data = seq ... def __iter__(self): ... return self ... def next(self): ... return choice(self.data) ... >>>
__init__()方法執行前述的賦值操作。__iter__()僅返回self,這就是如何將乙個物件宣告為迭代器的方式,最後,呼叫next()來得到迭代器中連續的值。這個迭代器唯一的亮點是它沒有終點。
2. anyiter
對乙個物件呼叫iter()就可以得到它的迭代器。
第13章 物件導向程式設計 3
13.4 類屬性 屬性就是屬於另乙個物件的資料或者函式元素,可以通過我們熟悉的句點屬性標識來訪問。13.4.1 類的資料屬性 資料屬性僅僅是所定義的類的變數。靜態變數,或者是靜態資料表示這些資料是與它們所屬的類物件繫結的,不依賴於任何類例項。靜態成員通常僅用來跟蹤與類相關的值。大多數情況下,你會考慮...
第13章 物件導向程式設計 17
13.16.5 元類和 metaclass 1.元類 metaclasses 是什麼 元類讓你來定義某些類是如何被建立的,從根本上說,賦予你如何建立類的控制權。從根本上說,你可以把元類想成是乙個類中類,或是乙個類,它的例項是其他的類。當你建立乙個新類時,你就是在使用預設的元類,它是乙個型別物件 對傳...
第13章 物件導向程式設計 11
13.12 類 例項和其他物件的內建函式 13.12.1 issubclass issubclass 布林函式判斷乙個類是否另乙個類的子類或子孫類。class sortedkeydict dict def keys self return sorted super sortedkeydict,sel...