擅长:python、mysql、java
<p>我不确定是否有Python式的方法来做这件事,因为你可以像你在问题中那样做。更确切地说,这更多的是关于OOP的,而不是关于python的问题。在</p>
<p>所以我假设在<code>BaseClient</code>中实现了其他方法,而不是其他子级共享的<code>create</code>(否则,没有必要使<code>ClientC</code>成为{<cd1>}的子级)。在您的例子中,看起来<code>ClientC</code>由于需要<code>create</code>方法的不同签名而与其他方法不同。那么也许是时候考虑把它们分开了?在</p>
<p>例如,您可以让根<code>BaseClient</code>实现除<code>create</code>之外的所有共享方法,然后再拥有两个<em>“base”</em>子级,如下所示:</p>
<pre><code>class EntityBasedClient(BaseClient):
def create(self, entity_id, data=None):
pass
class DataBasedClient(BaseClient):
def create(self, data):
pass
</code></pre>
<p>所以现在您可以继承而不违反任何规则:</p>
^{pr2}$
<hr/>
<p>另外,如果这两个版本的<code>create</code>实现非常相似,那么可以通过在带有签名<code>_create(self, entity_id=None, data=None)</code>的{<cd1>}中实现一个更通用的私有方法,然后从<code>EntityBasedClient</code>和<code>DataBasedClient</code>内部使用适当的参数调用它,从而避免代码重复。在</p>