title: Difference between __str__(self) and show(self)
body: <p>Just encountered an example Fraction class and am not too sure what the difference between these two methods is. Once <code>__str__</code> has been implemented doesn't <code>show</code> become redundent ?</p>
  
  <pre><code>def __str__(self):
      return str(self.num)+"/"+str(self.den)
  
  def show(self):
      print(self.num,"/",self.den)
  </code></pre>
  
  <p>I realise <code>__str__</code> is a <em>magic</em> method who's implementation takes care of any context that requires a string version of the class. Just can't see the point of the <code>show(self)</code> method ?</p>
  
  <hr>
  
  <p>EDIT</p>
  
  <p>Is show a generic method that most classes require?<br>
  My problem is if I have a fraction x then all I need do is <code>print(x)</code> and I will see <code>1\2</code> or what ever the instance holds - so why would one ever bother implementing an additional method <code>show</code> ?</p>