title: Abstract methods in Python
body: <p>I need something like an <code>abstract protected</code> method in Python (3.2):</p>
  
  <pre><code>class Abstract:
      def use_concrete_implementation(self):
          print(self._concrete_method())
  
      def _concrete_method(self):
          raise NotImplementedError()
  
  
  class Concrete(Abstract):
      def _concrete_method(self):
          return 2 * 3
  </code></pre>
  
  <p>Is it actually useful to define an "abstract" method only to raise a NotImplementedError?</p>
  
  <p>Is it good style to use an underscore for abstract methods, that would be <code>protected</code> in other languages?</p>
  
  <p>Would an abstract base class (abc) improve anything?</p>