title: Inheritance: change signature of child methods
body: <p>I try to figure out what is the best practice in Python inheritance principles, when there is a 'bad idea' to change method signature in a child. </p>
  
  <p>Let's suppose we have some base class <code>BaseClient</code> with already implemented <code>create</code> method (and some abstract ones) that fits good for almost all 'descendants' except one:</p>
  
  <pre><code> class BaseClient(object):
  
       def __init__(self, connection=None):
           pass
  
       def create(self, entity_id, data=None):
           pass
  
   class ClientA(BaseClient):
       pass
  
   class ClientB(BaseClient):
       pass
  </code></pre>
  
  <p>The only class <code>ClientC</code> needs another implementation of <code>create</code> method with a little bit another method signature</p>
  
  <pre><code> class ClientC(BaseClient):
       ....
       def create(self, data):
           pass
  </code></pre>
  
  <p>So the question is how to make this in a more 'pythonic' way, taking into account best python practice? Of course we can use <code>*args, **kwargs</code> and other <code>**kwargs</code>-like approaches in parent (child) method, but I'm afraid it makes my code less readable (self-documented).</p>