擅长:python、mysql、java
<p>让<code>AA</code>从<code>A</code>继承有什么不好的?它基本上是一个抽象基类,它添加了<code>A</code>中没有的附加功能。如果您真的不希望<code>AA</code>被实例化,那么python的答案是不用担心它,只需记录用户不打算这样做。但是如果你真的坚持,你可以定义<code>__new__</code>来在用户试图实例化<code>AA</code>时抛出一个错误。在</p>
<pre><code>class A:
def f(self):
pass
class AA(A):
def g(self):
pass
def __new__(cls, *args, **kwargs):
if cls is AA:
raise TypeError("AA is not meant to be instansiated")
return super().__new__(cls)
class B(AA):
pass
</code></pre>
<p>另一种选择可能是使<code>AA</code>成为{a1}。要实现这一点,您需要至少定义一个方法作为抽象方法,<code>__init__</code>可以这样做,如果没有其他方法您想说是抽象的。在</p>
^{pr2}$
<p>最后,在<code>A</code>上使用子代方法有什么不好的,但是不使用它。您正在为<code>A</code>编写代码,所以不要使用该方法。。。您甚至可以记录该方法,说明它并不打算由<code>A</code>直接使用,而是可以用于子类。这样未来的开发人员就会知道你的意图。在</p>