title: Change default constructor argument value (inherited from parent class) in subclass
body: <p>I have a <code>Parent</code> class with a default value for the attribute <code>arg2</code>. I want to create a subclass <code>Child</code> which has a different default value for the same attribute.
  I need to use <code>*args</code> and <code>**kwargs</code> in <code>Child</code>.</p>
  
  <p>I tried the following, but it is not working:</p>
  
  <pre><code>class Parent(object):
      def __init__(self, arg1='something', arg2='old default value'):
          self.arg1 = arg1
          self.arg2 = arg2
  
          print('arg1:', self.arg1)
          print('arg2:', self.arg2)
  
  class Child(Parent):
      def __init__(self, *args, **kwargs):
          super(Child, self).__init__(*args, **kwargs)
          self.arg2 = kwargs.pop('arg2', 'new value')
  </code></pre>
  
  <p>This is not working. In fact, I get:</p>
  
  <pre><code>&gt;&gt;&gt; c = Child()
  arg1: something
  arg2: default value # This is still the old value
  &gt;&gt;&gt; c.arg2
  'new value' # Seems more or less ok
  
  &gt;&gt;&gt; c = Child('one', 'two')
  arg1: one
  arg2: two
  &gt;&gt;&gt; c.arg2
  'new value' # This is wrong, it has overridden the specified argument 'two'
  </code></pre>