擅长:python、mysql、java
<p>选择mixin继承自什么的问题是,您的选择将影响使用这些mixin的类的最终MRO。在</p>
<blockquote>
<p>should <code>WithIndexing</code> inherit from WithAutoNumbering</p>
</blockquote>
<p>正如您所说,<code>WithIndexing</code>使用<code>WithAutoNumbering</code>。它是一种有趣的类,根本不能单独使用;并且通过继承<code>WithAutoNumbering</code>,<code>WithIndexing</code>可以覆盖<code>WithAutoNumbering</code>成员。在</p>
<p>一般来说,越是将其设置为单个继承,每个级别都将更容易覆盖上面找到的方法。在</p>
<p>但是,如果您选择另一种方式进行设计(这样您就需要从这两种方式继承来使一个类能够使用<code>WithIndexing</code>),那么您可能会完全正常,直到有东西覆盖了<code>WithAutoNumbering</code>中找到的方法。在这种情况下,类在基列表中的出现顺序可能会影响MRO的顺序,在这种情况下,您可能会得到令人惊讶的结果。如果您需要这样的能力来影响MRO,那么应该让这些mixin从object继承。不过,你可能不需要这个。在</p>