[Python-Dev] issue5578 - explanation

Guido van Rossum guido at python.org
Thu Apr 2 23:49:22 CEST 2009


On Thu, Apr 2, 2009 at 2:21 PM, Chris Withers <chris at simplistix.co.uk> wrote:
> Guido van Rossum wrote:
>>>
>>> from functools import partial
>>> from new import instancemethod
>>>
>>> def meth(name,self,*args):
>>>   return getattr(self._sock,name)(*args)
>>>
>>> for _m in _socketmethods:
>>>   p = partial(meth,_m)
>>>   p.__name__ = _m
>>>   p.__doc__ = getattr(_realsocket,_m).__doc__
>>>   m = instancemethod(p,None,_socketobject)
>>>   setattr(_socketobject,_m,m)
>>>
>>> Have I missed something or is that a suitable replacement that gets rid
>>> of
>>> the exec nastiness?
>>
>> That code in socket.py is much older that functools... I don't know if
>> the dependency matters, probably not.
>>
>> But anyways this is moot, the bug was only about exec in a class body
>> *nested inside a function*.
>
> Indeed, I just hate seeing execs and it was an interesting mental exercise
> to try and get rid of the above one ;-)
>
> Assuming it breaks no tests, would there be objection to me committing the
> above change to the Python 3 trunk?

That's up to Benjamin. Personally, I live by "if it ain't broke, don't
fix it." :-)

-- 
--Guido van Rossum (home page: http://www.python.org/~guido/)


More information about the Python-Dev mailing list