title: TypeError: _transform() takes 2 positional arguments but 3 were given
body: <p>I learned the CaesarCipher:</p>
  
  <pre><code>In [90]: !cat caesar_cipher.py                                                                                                                        
  class CaesarCipher:
      """Construct Caesar cipher using given integer shift for rotation."""
      def __init__(self, shift):
          encoder = [None] * 26
          decoder = [None] * 26
          for k in range(26):
              encoder[k] = chr((k + shift)%26 + ord('A'))
              decoder[k] = chr((k - shift)%26 + ord('A'))  #find the number of Letters
          self.encoder = "".join(encoder)
          self.decoder = "".join(decoder)
  
      def encrypt(self, message):
          print(self.encoder)
          return self._transform(message, self.encoder)
  
      def decrypt(self, message):
          return self._transform(message, self.decoder)
  
      def _transform(original, code):
          msg = list(original)
          for k in range(len(msg)):
              j = ord(msg[k]) - ord('A')
              msg[k] = code[j]
          return "".join(msg)
  
  if __name__ == "__main__":
      cipher = CaesarCipher(3)
      message = "THE EAGLE IS IN PLAY; MEET AT JOE'S."
      coded = cipher.encrypt(message)
      print("Secret: ", coded)
      answer = cipher.decrypt(coded)
      print("Message: ", answer)
  </code></pre>
  
  <p>It report error on <code>_trasform</code></p>
  
  <pre><code>In [91]: !python caesar_cipher.py                                                                                                                     
  DEFGHIJKLMNOPQRSTUVWXYZABC
  Traceback (most recent call last):
    File "caesar_cipher.py", line 29, in &lt;module&gt;
      coded = cipher.encrypt(message)
    File "caesar_cipher.py", line 14, in encrypt
      return self._transform(message, self.encoder)
  TypeError: _transform() takes 2 positional arguments but 3 were given
  </code></pre>
  
  <p>"_transform() takes 2 positional arguments" and I did give 2 arguments</p>
  
  <p>Why it report 3 were given?</p>