擅长:python、mysql、java
<p><code>SubQuery</code>是一个抽象基类(根据<a href="https://docs.python.org/3/library/abc.html" rel="nofollow noreferrer">^{<cd2>} module</a>),其中包含一个或多个未重写的抽象方法。通过将<code>ABC</code>添加到基类列表中,您将<code>ValueSum</code>本身定义为一个抽象基类。这意味着您不必重写这些方法,但也意味着您不能实例化<code>ValueSum</code>本身</p>
<p>PyCharm提前警告您需要实现从<code>SubQuery</code>继承的抽象方法;如果您不这样做,那么当您实际尝试实例化<code>ValueSum</code>时,您将从Python中得到一个错误</p>
<hr/>
<p>至于从<code>ABC</code><em>继承做什么,答案是。。。不多这是设置元类的便利。以下是等效的:</p>
<pre><code>class Foo(metaclass=abc.ABCMeta):
...
</code></pre>
<p>及</p>
<pre><code>class Foo(abc.ABC):
...
</code></pre>
<p>元类修改<code>__new__</code>,以便每次尝试创建类实例时都会检查该类是否在父类中实现了所有用<code>@abstractmethod</code>修饰的方法</p>