>>> a=BinaryTree(yielder())
>>> b=iter(a)
>>> next(b)
'a'
>>> next(b)
yielder: None
'a'
>>> next(b)
yielder: None
'a'
>>> try:
b.send('asd')
except StopIteration as e:
y=e
yielder: asd
binary: yielder return
>>> next(b)
Traceback (most recent call last):
File "<pyshell#83>", line 1, in <module>
next(b)
StopIteration
>>> y
StopIteration()
>>> dir(y)
['__cause__', '__class__', '__context__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setstate__', '__sizeof__', '__str__', '__subclasshook__', '__traceback__', 'args', 'value', 'with_traceback']
>>> y.value
>>> y.args
()
>>> y.value
>>> type(y.value)
<class 'NoneType'>
>>> class BinaryTree:
def __init__(self, left=None, us=None, right=None):
self.left = left
self.us = us
self.right = right
def __iter__(self):
if self.left:
yield from self.left
print ('binary: ')
>>> a=BinaryTree(y())
>>> b=iter(a)
>>> a=BinaryTree(y())
>>> b=iter(a)
>>> try:
next(b)
except Exception as e:
print (e.__traceback__,e.args,e.__class__,e.value,sep='\n')
'a'
>>> try:
next(b)
except Exception as e:
print (e.__traceback__,e.args,e.__class__,e.value,sep='\n')
'b'
>>> try:
next(b)
except Exception as e:
print (e.__traceback__,e.args,e.__class__,e.value,sep='\n')
<traceback object at 0x00F31CB0>
('end',)
<class 'StopIteration'>
end
binary:
<traceback object at 0x00F31CB0>
()
<class 'StopIteration'>
None
>>> def y():
try:
yield 'a'
yield 'b'
raise StopIteration('end')
except Exception as e:
print (e.__traceback__,e.args,e.__class__,e.value,sep='\n')
raise e
>>> a=BinaryTree(y())
>>> b=iter(a)
>>>
>>> try:
next(b)
except Exception as e:
print (e.__traceback__,e.args,e.__class__,e.value,sep='\n')
'a'
>>> try:
next(b)
except Exception as e:
print (e.__traceback__,e.args,e.__class__,e.value,sep='\n')
'b'
>>> try:
next(b)
except Exception as e:
print (e.__traceback__,e.args,e.__class__,e.value,sep='\n')
<traceback object at 0x00F31F08>
('end',)
<class 'StopIteration'>
end
binary:
<traceback object at 0x00F31E40>
()
<class 'StopIteration'>
None