title: Python type() not giving exact class type instead gives metaclass type
body: <p>I am trying to pass the type of a class to a method so that it can be dynamically instantiated. The class extends to a base class which further extends to an abstract class. Now when I check the type of my class it comes as the abstract class type instead of the child class.</p>
  
  <p>Here is how my classes look like </p>
  
  <pre><code>class AMeta(type):
       # stuff
  
  class Parent(six.with_metaclass(AMeta, object)):
       # stuff
  
  class Child(Parent):
      # stuff
  </code></pre>
  
  <p>Now when I use <code>type(Child) or Child.__class__</code> it gives me <code>AMeta</code> whereas I would like to get <code>Child</code>. I want to pass this Child to another method which would dynamically create its object.</p>
  
  <pre><code>def create_obj(clzz):
     return clzz()
  </code></pre>
  
  <p>When I call the method like <code>create_obj(type(Child))</code> it doesn't work and breaks but when I call <code>Child.mro()[0]</code> it works fine what is happening here and is there another way to achieve what I am achieving via mro method?</p>