Oleg Oshmyan <chor...@inbox.lv> added the comment:

> We can use a class attribute to set the attribute before calling __init__

Ah, yes, I thought about adding a class attribute as well, but the class 
currently does not have any and initializes instance attributes to default 
values in __init__, so I chose getattr.

> How can this be tested? According to the initial report, exceptions raised in 
> __del__ seem to be ignored.

Exceptions raised in __del__ are printed to sys.stderr, even if it has been 
reassigned by Python code:

>>> import sys, io, subprocess
>>> sys.stderr = io.StringIO()
>>> subprocess.Popen(fdsa=1)
>>> sys.stderr.getvalue()
'Exception AttributeError: "\'Popen\' object has no attribute 
\'_child_created\'" in <bound method Popen.__del__ of <subprocess.Popen object 
at 0x1006ee710>> ignored\nTraceback (most recent call last):\n  File "<stdin>", 
line 1, in <module>\nTypeError: __init__() got an unexpected keyword argument 
\'fdsa\'\n'

test_generators.py already uses this trick in a test similar to what would be 
needed for this issue around line 1856.

Should I attempt to modify my patch to include a comment and a test?

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue12085>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to