Default method arguments

Fredrik Lundh fredrik at pythonware.com
Wed Nov 16 06:07:24 EST 2005


Duncan Booth wrote:

> What you really want is for the marker to exist only in its own little
> universe, but the code for that is even messier:
>
> class A(object):
>    def __init__(self, n):
>        self.data =n
>    def make_f():
>        marker = object()
>        def f(self, x = _marker):

NameError: global name '_marker' is not defined

>            if x is _marker:
>                x = self.data
>            print x
>        return f
>    f = make_f()
>
>>>> instance = A(6)
>>>> instance.f()
> 6

in another universe, perhaps, but not very far away:

    >>> instance.f.im_func.func_defaults[0]
    <object object at 0x009EC438>

    >>> inspect.getargspec(A.f)
    (['self', 'x'], None, None, (<object object at 0x009EC438>,))

</F> 






More information about the Python-list mailing list