擅长:python、mysql、java
<h2>为什么要用抽象类来扩展抽象类</h2>
<p>假设你的项目更复杂。你可以有抽象类,比如<code>Animal</code>,<code>LandAnimal</code>和{<cd3>},然后是具体的类,比如<code>Dog</code>,<code>Wolf</code>和{<cd6>}(<em>现在让我们忽略一些狗游泳和一些鱼走路</em>):</p>
<p><a href="https://i.stack.imgur.com/JrJx6.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/JrJx6.png" alt="Structure implementation"/></a></p>
<p>在这种实现中,“中间”抽象类非常有用,因为它们同意避免重复代码,如<code>LandAnimal</code>示例中所示。在</p>
<p>当然,这段代码也可以使用decorator而不是抽象方法<code>move</code>上的子类来实现,但是通常情况下,当抽象子类包装的代码很重要或者至少在语义上有优势时,人们更喜欢抽象子类。在</p>
<h2>它们是如何在python中实现的</h2>
<p>在python中,您可以创建一个抽象类,方法是在不重写时向它添加一个引发异常的方法,如:</p>
<pre><code>class A:
def my_abstract_method(self):
raise NotImplementedError("You should override 'my_abstract_method'")
</code></pre>
<p>或者,在python“>;2.6”中,您可以使用<a href="https://docs.python.org/3/library/abc.html" rel="nofollow noreferrer">^{<cd9>}</a>,这个包提供了创建抽象类所需的基本所有信息,例如decorator和<code>ABC</code>(抽象基类):</p>
^{pr2}$