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