在以下代码中

class Student(object):
   def __init__(self):
       self.vals=[9,2,4,1]

   def allstudents(self):
      self.vals.sort()
      for s in self.vals:
            yield s


jack = Student()

jack.allstudents().next()->当然输出是1

jack.allstudents().next()->这是问题所在:该行的输出仍然为1。为什么不是2?

jack.allstudents().next()->此行的输出仍然为1。为什么不是4?

有人可以给我一个解释吗?

最佳答案

因为您不断地反复调用allstudents()方法。尝试将其存储在变量中,然后在分配给它的变量上调用next(),例如:

var = jack.allstudents()
var.next()
var.next()


等等。

关于python - Python:如何通过此类实例在类方法中实现Generator,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32025894/

10-12 18:41