Default parameter for a method

Larry Bates larry.bates at websafe.com`
Wed Apr 16 14:47:31 EDT 2008


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.

-Larry



More information about the Python-list mailing list