擅长:python、mysql、java
<p>这是继面向对象编程(OOP)之后的抽象类的要点。继承自抽象类的类需要实现所有抽象方法。如果他们是抽象的,他们不需要这样做。这些抽象方法类似于接口的方法签名,内部没有任何实现。因此,如果不插入所有抽象方法,就无法创建非abtract类<code>ABC</code>只是一个助手类,通过从中派生来创建新的抽象类。在这里,您可以阅读有关Python中抽象类的更多信息:<a href="https://docs.python.org/3/library/abc.html" rel="nofollow noreferrer">https://docs.python.org/3/library/abc.html</a></p>
<p>根据你的观察,你把<code>ValueSum</code>标记为抽象。这意味着<code>ValueSum</code>的所有子类都需要实现<code>ValueSum</code>的抽象方法及其所有抽象超类,包括<code>SubQuery</code></p>
<blockquote>
<p>I write class that abstracts from some class.</p>
</blockquote>
<p>不是。您编写了一个类,它继承了另一个类</p>
<blockquote>
<p>Should I always do this when I writing sub class?</p>
</blockquote>
<p>不可以。仅当您希望类是抽象的</p>
<blockquote>
<p>What is the difference between manually implementing all the methods vs just using ABC</p>
</blockquote>
<p>在本例中,您将实现转发给<code>ValueSum</code>的所有子类。不使用<code>ABC</code>将迫使您在<code>ValueSum</code>内实现抽象方法</p>
<blockquote>
<p>Does <code>ABC</code> add something to my code?</p>
</blockquote>
<p>不。在任何情况下,不超过使用其他类/继承</p>