Default parameter for a method... again

Matimus mccredie at gmail.com
Wed Apr 16 13:00:44 EDT 2008


On Apr 16, 9:26 am, s0s... at gmail.com wrote:
> I had posted this before but all the spam whipped it out...
>
> 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 thereturn 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.

That is the straightforward way. It may not seem that way now but all
languages have patterns and this is a common one in python. You will
see code like this all over Python, even in the standard library. The
best thing to do is embrace it. It will not only work, but make your
code more readable to others.

Matt



More information about the Python-list mailing list