Thanks for the tip Steven.
Regards
Karim
On 01/26/2011 12:39 AM, Steven D'Aprano wrote:
Karim wrote:
Hello Bob,
I know this fact for function but in this case this is not a function
but a constructor method of a class.
Methods *are* functions. (Technically, they are lightweight wrappers
around functions.) They are treated exactly the same by Python. The
"constructor method" __init__ is treated not special. You can easily
see this by printing the function from *inside* the class, before it
gets wrapped by the class machinery:
>>> class Test: # From Python 3, Python 2 may be a bit different.
... def __init__(myname, arg=[]):
... pass
... print(__init__)
... print(__init__.__defaults__)
...
<function __init__ at 0xb7c1de2c>
([],)
And there you can clearly see the list used as a default value.
It is a little bit harder from outside, because the function is
wrapped in a method-wrapper, but not that hard:
>>> instance = Test()
>>> instance.__init__.__func__
<function __init__ at 0xb7c1de2c>
>>> instance.__init__.__func__.__defaults__
([],)
_______________________________________________
Tutor maillist - Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor