擅长:python、mysql、java
<p>那在课堂上检查一下钥匙吧</p>
<pre><code>>>> Hello.__dict__.has_key('__abstractmethods__')
True
>>> Hello.__dict__.has_key('__metaclass__')
True
>>>
</code></pre>
<p>您可以确保将<code>Hello.__abstractmethods__</code>中定义的所有方法覆盖到子类中。在</p>
^{pr2}$
<p>如果您未能在子类中重新定义这些方法中的任何一个,则仍将获得缺少的方法的TypeError:</p>
<p><code>TypeError: Can't instantiate abstract class Abs_Hello with abstract methods remove</code></p>
<p>或者像这样的测试怎么样:</p>
<pre><code> def check_all(abstract, sub_class):
abs_method = abstract.__abstractmethods__
for m in abs_method:
if not isinstance(m, sub_class):
raise TypeError("%s is not defined in subclass %s" % (m, repr(sub_class)))
</code></pre>