title: Is there any difference between these two cases: passing class name vs object
body: <p>I'm new to Python and not sure about many idioms. I have found code where a function gets a class name as argument. Is there any reason to do it? I've simplified the code to this:</p>
  
  <pre><code>class A:
      def __init__(self):
          print ("A")
  
  
  def foo_1(a):
      inst = a()
      return inst
  
  
  def foo_2(a):
      inst = a
      return inst
  
  
  if __name__ == "__main__":
      i1 = foo_1(A)
      i2 = foo_2(A())
  </code></pre>
  
  <p>Is there any difference between implementing it like foo_1 ( the way it is implemented now), and the foo_2 (The way I would consider to be more intuitive)</p>
  
  <p>Thanks!</p>