title: how to ignore __repr__() for certain method but not others
body: <p>sorry I am not quite sure how to put the title more accurately. </p>
  
  <p>I have a class with <code>__repr__()</code> to report the some key attributes of class. </p>
  
  <p>Most of my methods return self, so that I can daisy-chain methods. e.g. <code>a.m1().m2()...</code></p>
  
  <pre><code>class Myclass:
      def __init__(self):
          self.a = 1
          self.b = "hello"
  
      def __repr__(self):
          msg = f"Myclass: a = {self.a}, b is {self.b}."
          return msg
  
      def plus(self, n):
          self.a += n
          return self
  
      def concat(self, s):
          self.b += s
          return self
  
      def play(self):
          # play audio here
          return self
  
  ac = Myclass()
  ac.plus(n=4)  # Ok i would like to see __repr__ output
  
  ac.play()  # no I dont want to see __repr__
  </code></pre>
  
  <p>The <code>__repr__</code> works great in Jupyter as it can give me a report on some key attributes by just executing <code>ac</code>. However, I have a <code>play()</code> method to play the audio, which also return self, and I absolutely do not want the print to execute as sometime I might need to call this method multiple times quickly. </p>
  
  <p>So is there a way to have <code>return self</code> in all my methods, but not call <code>__repr__</code> on return?</p>
  
  <p>Many thanks</p>