擅长:python、mysql、java
<p>作为<a href="https://stackoverflow.com/a/44316063/4653485">Uriel says</a>,它是指应该在子类中实现的抽象类中的方法,但也可以用于指示TODO。</p>
<p>对于第一个用例有一个替代方案:<a href="https://docs.python.org/3.4/library/abc.html" rel="noreferrer">Abstract Base Classes</a>。这些有助于创建抽象类。</p>
<p>下面是Python3示例:</p>
<pre><code>class C(abc.ABC):
@abstractmethod
def my_abstract_method(self, ...):
...
</code></pre>
<p>当实例化<code>C</code>时,会得到一个错误,因为<code>my_abstract_method</code>是抽象的。您需要在子类中实现它。</p>
<pre><code>TypeError: Can't instantiate abstract class C with abstract methods my_abstract_method
</code></pre>
<p>子类<code>C</code>并实现<code>my_abstract_method</code>。</p>
<pre><code>class D(C):
def my_abstract_method(self, ...):
...
</code></pre>
<p>现在您可以实例化<code>D</code>。</p>
<p><code>C.my_abstract_method</code>不必为空。它可以使用<code>super()</code>从<code>D</code>调用。</p>
<p>与<code>NotImplementedError</code>相比,这种方法的一个优点是在实例化时而不是方法调用时获得显式的<code>Exception</code>。</p>