title: Use default argument if argument is None on python method call
body: <p>Kind of a strange question, but I stumbled upon this one while coding.</p>
  
  <p>This is my code</p>
  
  <p><strong>EDIT:</strong> I added classes to make my structure clearer</p>
  
  <pre><code>class Hidden(object):
      def x(self, aa, bb="John Doe"):
          print aa, bb
  
  class Open(object):
      def __init__(self):
          self.h = Hidden()
  
      def y(self, a, b=None):
          # get rid of this if-else-foo
          if b is None:
              self.h.x(a)
          else:
              self.h.x(a, b)
  
  o = Open()
  o.y("Hello") # &gt; Hello John Doe
  
  o.y("Hello", "Mister X") # &gt; Hello Mister X
  </code></pre>
  
  <p>If <code>b</code> is <code>None</code> (not set), I want method <code>x</code> to be called without the argument (using the default).</p>
  
  <p>I wonder if there's a way to get rid of the if-else foo?</p>
  
  <p><strong>SOLUTION</strong></p>
  
  <p>As I can only accept one answer, I can say, that all listed solutions work.</p>
  
  <p>Here's my summary for the given answers:</p>
  
  <ol>
  <li>@Duncan : for me it is the nicest way to achieve what I want.</li>
  <li>@falsetru : it is also a nice approach, although I think methods with <code>*args</code> are hard to read.</li>
  <li>@peter-wood and @tgg : both version work and save 3 lines of code. But an <code>if</code> statement remains, which I wanted to avoid.</li>
  </ol>