Default parameter for a method

Cliff Wells cliff at develix.com
Wed Apr 16 15:05:14 EDT 2008


On Wed, 2008-04-16 at 13:47 -0500, Larry Bates wrote:
> s0suk3 at gmail.com wrote:
> > I wanted to know if there's any way to create a method that takes a
> > default parameter, and that parameter's default value is the return
> > value of another method of the same class. For example:
> > 
> > class A:
> >     def __init__(self):
> >         self.x = 1
> > 
> >     def meth1(self):
> >         return self.x
> > 
> >     def meth2(self, arg=meth1()):
> >         # The default `arg' should would take the return value of
> > meth1()
> >         print '"arg" is', arg
> > 
> > This obviously doesn't work. I know I could do
> > 
> > ...
> >     def meth2(self, arg=None):
> >         if arg is None:
> >             arg = self.meth1()
> > 
> > but I'm looking for a more straightforward way.
> 
> You can write this as:
> 
>      def meth2(self, arg=None):
>          arg = arg or self.meth1()
> 
> IMHO - You can't get much more "straightforward" than that.

What if arg is 0 an empty list or anything else that's "False"?

def meth2(self, arg=None):
    arg = (arg is not None) or self.meth1()

is what you want.


Regards,
Cliff





More information about the Python-list mailing list