Default parameter for a method... again

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • s0suk3@gmail.com

    Default parameter for a method... again

    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.
  • Matimus

    #2
    Re: Default parameter for a method... again

    On Apr 16, 9:26 am, s0s...@gmail.co m 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

    Comment

    Working...