title: Should I use abstract classes?
body: <p>I have read that this is the best way to implement an abstract class in Python (as opposed to the <code>abc</code> module):</p>
  
  <pre><code>class Animal(object):
      def speak(self):
          raise NotImplementedError()
  
  class Duck(Animal):
      def speak(self):
          print("quack")
  
  class Cat(Animal):
      def speak(self):
          print("meow")
  </code></pre>
  
  <p>However, should I use abstract classes? Should I or should I not just use one less class like so:</p>
  
  <pre><code>class Duck(object):
      def speak(self):
          print("quack")
  
  class Cat(Animal):
      def speak(self):
          print("meow")
  </code></pre>