擅长:python、mysql、java
<p>在Python中,简单地从ABC继承并不能阻止实例化。这很好:</p>
<pre><code>from abc import ABC
class Foo(ABC):
pass
foo = Foo()
</code></pre>
<p>只有在存在未实现的<code>abstractmethod</code>时,实例化才会引发错误</p>
<p>您的中间类不必从ABC继承,只需从<code>DataBuffer</code>继承即可。只要有未实现的<code>abstractmethod</code>的实例化就会失败。你知道吗</p>
<pre><code>from abc import ABC, abstractmethod
class Foo(ABC):
@abstractmethod
def do_thing(self):
pass
class Bar(Foo):
pass
bar = Bar() # Instantiation raises TypeError because Bar does not implement do_thing
</code></pre>
<p>由于Bar继承自Foo,Foo是一个抽象类,因此Bar也是一个抽象类:</p>
<pre><code>>>> type(Foo)
<class 'abc.ABCMeta'>
>>> type(Bar)
<class 'abc.ABCMeta'>
</code></pre>
<p>与其他随机类比较:</p>
<pre><code>>>> class Baz:
>>> pass
>>> type(Baz)
<class 'type'>
</code></pre>