title: Overriding a parent class's methods
body: <p>Something that I see people doing all the time is:</p>
  
  <pre><code>class Man(object):
      def say_hi(self):
          print('Hello, World.')
  
  class ExcitingMan(Man):
      def say_hi(self):
          print('Wow!')
          super(ExcitingMan, self).say_hi()  # Calling the parent version once done with custom stuff.
  </code></pre>
  
  <p>Something that I never see people doing is:</p>
  
  <pre><code>class Man(object):
      def say_hi(self):
          print('Hello, World.')
  
  class ExcitingMan(Man):
      def say_hi(self):
          print('Wow!')
          return super(ExcitingMan, self).say_hi()  # Returning the value of the call, so as to fulfill the parent class's contract.
  </code></pre>
  
  <p>Is this because I hang with all the wrong programmers, or is it for a good reason?</p>