Ich versuche, eine Klasse, die ich erstellt habe, zu einem unendlichen Seriengenerator zu machen.Wie Drucken Generator Objekt ergab Wert?
Die Klasse im Grunde wie das ist (I weggelassen die anderen Methoden, wie es groß ist):
class Step(object):
''' A Step taken through a field. '''
def __init__(self, step_id, offset, danger,
danger_limit=None, is_encounter = None, input=None):
self.step_id = step_id
self.offset = offset
self.danger = danger
self.is_encounter = is_encounter
self.rnd = self.get_rnd(self.step_id, self.offset)
self.danger_limit = self.get_danger_limit(self.rnd)
def __repr__(self):
return '{0}\t{1}\t{2}\t{3}\t{4}\t{5}\t{6}'.format(
self.step_id, self.offset, self.danger,
self.rnd, self.danger_limit, self.is_encounter, self.input)
def __iter__(self):
return self
def advance_step(self, danger_inc=113):
''' To help with generator functions. '''
# Advances the current step, so make a current step object.
old_Step = Step(step_id=self.step_id, offset=self.offset, danger=self.danger)
step_id = Step.get_step_id(old_Step.step_id)
offset = Step.get_offset(step_id, old_Step.offset)
danger = Step.get_danger(danger_inc, old_Step.danger, old_Step.danger_limit)
new_step = Step(step_id = step_id, offset = offset, danger = danger)
new_step.is_encounter = Step.is_encounter(new_step.danger,
new_step.danger_limit)
return new_step
def next(self):
''' Yields next step in sequence. '''
while True:
yield self.advance_step()
ich eine Folge von Schritt Objekte drucken möchten. Also habe ich versucht, dieses:
def main():
step = Step(step_id=250, offset=13, danger=0)
print step.next()
# Generate next 4 steps in sequence.
for i in xrange(4):
print step.next()
Allerdings bekomme ich diese Ausgabe:
<generator object next at 0x104364cd0>
<generator object next at 0x104364cd0>
<generator object next at 0x104364cd0>
<generator object next at 0x104364cd0>
<generator object next at 0x104364cd0>
Erwartete Ausgabe wie eine Folge von Schritt Objekte aussehen sollte:
0 250 13 2048 0 74 19200 False None
1 252 13 2048 2048 216 55552 False None
2 254 13 2048 4096 163 41984 False None
3 0 26 2048 6144 151 38912 False None
4 2 26 2048 8192 212 54528 False None
ich die erwartete Ausgabe, wenn Ich mache folgendes:
step2 = step.advance_step()
step3 = step2.advance_step()
step4 = step3.advance_step()
print step,'\n', step2,'\n', step3,'\n', step4
Wie kann ich die ausgegebenen Schrittobjekte drucken und das Generatorobjekt nicht zurückholen?
Ich nehme an, ich mache etwas sehr falsch, aber ich kann nicht sehen, was es ist.