gen_getattr: make the gi_running and gi_frame members discoverable (but

not writable -- too dangerous!) from Python code.
This commit is contained in:
Tim Peters 2001-06-26 22:24:51 +00:00
parent 0ba70cc3c8
commit e77f2e2798
2 changed files with 39 additions and 6 deletions

View file

@ -368,7 +368,7 @@ Next one was posted to c.l.py.
[1, 2, 3, 4]
5-combs of [1, 2, 3, 4]:
# From the Iterators list, about the types of these things.
From the Iterators list, about the types of these things.
>>> def g():
... yield 1
@ -379,7 +379,7 @@ Next one was posted to c.l.py.
>>> type(i)
<type 'generator'>
>>> dir(i)
['next']
['gi_frame', 'gi_running', 'next']
>>> print i.next.__doc__
next() -- get the next value, or raise StopIteration
>>> iter(i) is i
@ -387,6 +387,26 @@ next() -- get the next value, or raise StopIteration
>>> import types
>>> isinstance(i, types.GeneratorType)
1
And more, added later.
>>> i.gi_running
0
>>> type(i.gi_frame)
<type 'frame'>
>>> i.gi_running = 42
Traceback (most recent call last):
...
TypeError: object has read-only attributes
>>> def g():
... yield me.gi_running
>>> me = g()
>>> me.gi_running
0
>>> me.next()
1
>>> me.gi_running
0
"""
# Fun tests (for sufficiently warped notions of "fun").