title: Python optional parameters
body: <p>Guys, I just started python recently and get confused with the optional parameters, say I have the program like this:</p>
  
  <pre><code>class B:
     pass
  
  class A:
      def __init__(self, builds = B()):
          self.builds = builds
  </code></pre>
  
  <p>If I create A twice</p>
  
  <pre><code>b = A()
  c = A()
  </code></pre>
  
  <p>and print their builds</p>
  
  <pre><code>print b.builds
  print c.builds
  </code></pre>
  
  <p>I found they are using the exactly same object,</p>
  
  <pre><code>&lt;__main__.B instance at 0x68ee0&gt;
  &lt;__main__.B instance at 0x68ee0&gt;
  </code></pre>
  
  <p>But it is not what I want, since if <code>b</code> changed some internal state of builds, the one in <code>c</code> object will also be changed.</p>
  
  <p>Is it possible to recreate this optional parameters each time by using this optional parameters syntax?</p>