Function __defaults__

Ken Seehart ken at seehart.com
Sun Apr 24 17:44:58 EDT 2011


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.kaplan at 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
>




More information about the Python-list mailing list