title: "<method> takes no arguments (1 given)" but I gave none
body: <p>I am new to Python and I have written this simple script:</p>
  
  <pre><code>#!/usr/bin/python3
  import sys
  
  class Hello:
      def printHello():
          print('Hello!')
  
  def main():
      helloObject = Hello()
      helloObject.printHello()   # Here is the error
  
  if __name__ == '__main__':
      main()
  </code></pre>
  
  <p>When I run it (<code>./hello.py</code>) I get the following error message:</p>
  
  <blockquote>
  <pre><code>Traceback (most recent call last):
    File "./hello.py", line 13, in &lt;module&gt;
      main()
    File "./hello.py", line 10, in main
      helloObject.printHello()
  TypeError: printHello() takes no arguments (1 given)
  </code></pre>
  </blockquote>
  
  <p>Why does Python think I gave <code>printHello()</code> an argument while I clearly did not? What have I done wrong?</p>