1
我有這樣一個方案:作爲類成員的Python迭代器?
class Base(object):
param, d=0, 1
def get_all(self):
while True:
a = self.get_xxx(param)
if not a:
break
handle(a)
param += d
class A(Base):
def get_xxx(param):
return some_method(param)
class B(Base):
def get_xxx(param):
return other_method(param)
然後,我被告知,對於B,每個get_xxx PARAM後應該是+ 1,而不是PARAM + d。這意味着我需要在get_all的末尾提取參數更改邏輯。我想出了一個使用迭代器的方案:
class Base(object):
def get_all(self):
get_xxx = self.get_xxx()
while True:
a = get_xxx.next()
if not a:
break
handle(a)
class A(Base):
def get_xxx():
param, d = 0, 1
while True:
yield somemethod(param)
param += d
class B(Base):
def get_xxx():
param = 0
while True:
a = somemethod(param)
param = a + 1
yield a
問題解決了,但不知何故,我感到不舒服。所以我想知道是否有更好的解決方案?非常感謝!
哪個Python版本是這樣嗎? –
在StackOverflow暴徒毆打致死之前,我建議您將您的問題提交給CodeReview:StackOverflow用於解決技術問題(例如「我的狗已經吃掉了我的程序!」),而CodeReview則用於改進現有的解決方案。鏈接:http://codereview.stackexchange.com/ – lucasg
@SimeonVisser 2.7.6 –