擅长:python、mysql、java
<p>你仍然有一个问题,当你继承你的类B,这将调用<code>A.__init__</code>,如果你不在子类中实现<code>createDrivers</code>,这行<code>callable(self.createDrivers)</code>将抛出一个错误,因为{<cd2>}不存在(AttributeError)我想如果我是你,我会这样做:</p>
<pre><code>class A(object):
def __init__(self, *args, **kwargs):
try:
self._drivers = self.createDrivers(*args, **kwargs)
select(self._drivers)
except NotImplementedError:
pass
def createDrivers(self, *args, **kwargs):
raise NotImplementedError("This class wasn't implemented")
class B(A):
def createDrivers(self, *args, **kwargs):
c1 = circle(sweep=270)[0]
c2 = circle(sweep=180)[0]
return c1, c2
class C(A):
pass
</code></pre>
<p>另一种方法是将<code>callable(self.createDrivers)</code>替换为<code>hasattr(self, 'createDrivers')</code>。在</p>