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