Stefan Krah <[email protected]> added the comment:
Mark Dickinson <[email protected]> wrote:
>
> Mark Dickinson <[email protected]> added the comment:
>
> class Context(object):
> def __init__(self):
> for name, val in locals().items():
> setattr(self, name, val)
>
>
> Isn't this dodgy anyway, since 'name' and 'val' end up going into locals()?
> I wonder why the RuntimeError *isn't* raised for a normal 'Context()' call
> (i.e., not via profile).
Indeed, and it seems to depend on how name and vals are used:
... print(locals())
...
{'name': '__builtins__', 'val': <module 'builtins' (built-in)>, '__builtins__':
<module 'builtins' (built-in)>, '__package__': None, 'Context': <class
'__main__.Context'>, '__name__': '__main__', '__doc__': None}
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
RuntimeError: dictionary changed size during iteration
... pass
...
>>> locals()
{'name': '__doc__', 'val': None, '__builtins__': <module 'builtins'
(built-in)>, '__package__': None, 'Context': <class '__main__.Context'>,
'__name__': '__main__', '__doc__': None}
>>>
----------
_______________________________________
Python tracker <[email protected]>
<http://bugs.python.org/issue9136>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com