利用python自定义完整版迭代器
classMyList(object):
??? """自定義的可迭代對象,迭代器 容器"""
??? def __init__(self):
??????? self.container = []
??????? self.i = 0
?
??? def add(self, item):
??????? """向對象中添加數據"""
??????? self.container.append(item)
?
??? def __next__(self):
??????? """對迭代器每次迭代的時候被調用"""
??????? if self.i < len(self.container):
??????????? item = self.container[self.i]
??????????? self.i += 1
??????????? return item
??????? else:
??????????? raise StopIteration
?
??? def __iter__(self):
??????? return self
?
?
my_list1 = MyList()
my_list1.add(100)
my_list1.add(200)
my_list1.add(300)
?
it =my_list1.__iter__()
from collectionsimport Iterator
?
print(isinstance(it,Iterator))
?
?
for num in my_list1:
??? print(num)
?
?
# iterator =my_list1.__iter__()
#
#iterator.__next__() # 100? i=0
#iterator.__next__() # 200? i=1
#
#
# iterator2 =my_list1.__iter__()
#iterator2.__next__() # 100?? i=0
?
# # 數據 屬性??? 類屬性?? 對象屬性/實例屬性
#
# # 函數 方法? 對象方法? 類方法? 靜態方法
#
# def object_fun(self):
#???? # 對象方法
#???? 通過self可以使用對象屬性? 類屬性
#
# @classmethod
# def class_fun(cls):
#???? # 類方法
#???? 通過cls可以使用類屬性
#
# @staticmethod
# def static_fun():
#???? # 靜態方法
#??? 如果不通過類名,那么類屬性與對象屬性都無法使用
總結
以上是生活随笔為你收集整理的利用python自定义完整版迭代器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python中的多线程-共享全局变量
- 下一篇: 4.聚合aggregate