Default method arguments

Duncan Booth duncan.booth at invalid.invalid
Tue Nov 15 17:23:41 CET 2005


Nicola Larosa wrote:
> # use new-style classes, if there's no cogent reason to do otherwise
> class A(object):
>     def __init__(self, n):
>         self.data = n
>     def f(self, x = None)
>         # do NOT use "if not x" !
>         if x is None:
>             print self.data
>         else:
>             print x
> 

Using None might be problematic if None could be a valid argument. The 
safest way all round is to use a unique object created just for this 
purpose:

_marker = object()

class A(object):

    def __init__(self, n):
        self.data = n

    def f(self, x=_marker)
        if x is _marker:
            x = self.data
        print x



More information about the Python-list mailing list