擅长:python、mysql、java
<p>听起来好像您希望<code>A</code>调用<code>UsedByUser</code>的受保护成员函数,该函数不能进入抽象<code>BaseClass</code>)。尝试在受保护的函数前面加下划线(尽管注意这只是Python使用的一个约定,没有严格检查,<a href="https://stackoverflow.com/questions/797771/python-protected-attributes/797814#797814">as mentioned here</a>)。在</p>
<pre><code>class BaseClass(object):
def A(self):
print "Grettings from A"
self._B()
def _B(self):
raise NotImplementedError('b must be implemented by a subclass')
class UsedByUser(BaseClass):
def _B(self):
""" prefix with underscore is a python convention for a protected member function """
print "B rocks!"
if ( __name__=='__main__' ):
usedByUser = UsedByUser()
usedByUser.A()
</code></pre>
<p>在<a href="http://www.python.org/dev/peps/pep-0008/" rel="nofollow noreferrer">PEP guidelines</a>中查找有关此约定的更多信息。在</p>
<p><strong>编辑:</strong></p>
<p><a href="https://stackoverflow.com/questions/7086348/inheritance-in-python/7086370#7086370">As GaretJax suggested</a>,为了清晰起见,我添加了一个<code>BaseClass</code><code>_B</code>方法。小费不错!在</p>