At 11:31 AM 5/1/2007 -0700, Guido van Rossum wrote:
>I haven't had the time to read this in detail, but in general I'm
>feeling favorable about this idea. I'd rather see it decoupled from
>sys._getframe() and modifying func_code (actually __code__ nowadays,
>see PEP 3100).

I've figured out how to drop *some* (but not all) of the _getframe() 
hackery from the current proposal, btw.  (Specifically, I believe I can 
make the decorators decide which function to return using __name__ 
comparisons instead of by checking frame contents.)

Regarding __code__, however, it's either that or allow functions to be 
subclassed and have their type changed at runtime.

In other words, if you could meaningfully assign to a function's __class__, 
then mucking with its __code__ would be unnecessary; we'd just override 
__call__ in a subclass, and change the __class__ when overloading an 
existing function.

Unfortunately, I believe that CPython 2.3 and up don't let you change the 
type of instances of built-in classes, and it's never been possible to 
subclass the function type, AFAIK.

OTOH, these restrictions may not exist in Jython, IronPython, or PyPy; if 
they allow you to subclass the function type and change a function's 
__class__, then that approach becomes a reasonable implementation choice on 
those platforms.

Thus, assignment to __code__ might reasonably be considered a workaround 
for the limitations of CPython in this respect, rather than a 
CPython-dependent hack.  :)

_______________________________________________
Python-3000 mailing list
Python-3000@python.org
http://mail.python.org/mailman/listinfo/python-3000
Unsubscribe: 
http://mail.python.org/mailman/options/python-3000/archive%40mail-archive.com

Reply via email to