Oops, I must correct myself.  Please ignore my previous post.

As Daniel points out, Writable is specified in the Python 3 documentation. Apparently I was reading the documentation with only my right eye open, and the Writable tag fell on my blind spot. I concur that this unambiguously implies that the attribute should work as advertised after being written.

This is not a bug in Jython. As Daniel points out the attribute was renamed from func_defaults to __defaults__ in python 3.

Jython 2.5.2 (Release_2_5_2:7206, Mar 2 2011, 23:12:06)
[Java HotSpot(TM) Client VM (Sun Microsystems Inc.)] on java1.6.0_24
Type "help", "copyright", "credits" or "license" for more information.
>>> def foo(x=4):
...   print x
...
>>> foo()
4
>>> foo.func_defaults
(4,)
>>> foo.func_defaults = (3,)
>>> foo()
3
>>>

So it works correctly in Jython 2.x.

Conclusion: Not an implementation detail, and safe to use.

Ken

On 4/24/2011 10:18 AM, Daniel Kluev wrote:
http://docs.python.org/dev/reference/datamodel.html
Callable types
...
Special attributes:
...
__defaults__    A tuple containing default argument values for those
arguments that have defaults, or None if no arguments have a default
value   Writable

I don't see any 'implementation detail' mark there, and 'Writable'
IMHO means it can be used.

On Mon, Apr 25, 2011 at 4:02 AM, Benjamin Kaplan
<benjamin.kap...@case.edu>  wrote:
Jython 2.5.1 (Release_2_5_1:6813, Sep 26 2009, 13:47:54)
In 2.x it was func_defaults (http://docs.python.org/reference/datamodel.html)
__defaults__ is 3.x feature


--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to