optional arguments

Alex Martelli aleax at aleax.it
Mon Sep 17 07:06:04 EDT 2001


"Silvio Arcangeli" <sarcangeli at montrouge.sema.slb.com> wrote in message
news:mailman.1000716020.11396.python-list at python.org...
> Hello everybody,
> sorry for this question that may seem silly.
> I have an object whose __init__  looks like the following:
>
> class Connection:
> def __init__(self, ip=def_ip, port=def_port)
> ...
>
> I have to call two different functions when the object is instantied like
> c=Connection()
> and when it is instantiated like
> c=Connection(def_ip, def_port)
>
> how can I tell wheter no arguments were passed from the user or whether
> they were passed but they were just like the default values?

By *NOT* using, as default values for the arguments, values
that could indeed equally well be passed by the client-code.

class Connection:
    class __Boo: pass
    __None = __Boo()
    def __init__(self, ip=__None, port=__None):
        if ip is self.__None:
            print "ip was NOT passed"
        else: print "ip was passed as",ip

etc, etc.

See http://www.penguin.it/pipermail/python/ if you'd
like help and/or discussion about Python in Italian.


Alex






More information about the Python-list mailing list