【发布时间】:2020-10-05 17:46:08
【问题描述】:
我在这里看不到我能理解的相关答案。我有一些代码可以输出我认为可以迭代但不能迭代的列表。
代码:
class freqList():
def __init__(self, startFreq, stopFreq, skip):
self.startFreq = startFreq
self.stopFreq = stopFreq
self.skip = skip
def __iter__(self):
pass
def listFreqs(self):
return list(range(self.startFreq, self.stopFreq, self.skip))
def __repr__(self):
return '{}, {}, {}'.format(
self.startFreq,
self.stopFreq,
self.skip)
def __str__(self):
return 'instance object of frequency list, startFreq:{},stopFreq: {},skip: {}'.format(
self.startFreq,
self.stopFreq,
self.skip)
print('\n'*4)
listy = freqList( 1000, 5000, 1000)#range cannot use floats, only ints
print(listy.listFreqs())
print('listy type:', type(listy),'\n')
listy_iter = iter(listy)
print('listy_iter type:', type(listy_iter),'\n')
期望的输出
当我实例化该类时,我希望它返回一个类似列表的可迭代对象。
尝试过
我看到提到 next 需要被覆盖,但我不知道这意味着什么,我是 OOP 的新手,只是刚刚了解了 init、str 和 repr。
【问题讨论】:
-
那么您的
__iter__方法只返回无。如果你让它做类似for x in self.listFreqs(): yield x的事情,那么你可以在你的主代码中做for item in listy: ....。
标签: python class oop next iterable