title: isinstance(list, object) and issubclass(list, object) both returns True
body: <p>I am trying to learn about special attributes of classes. Usually, I use the <code>dir()</code> method to get the attributes and methods of a class. However, the attribute <code>__mro__</code> doesn't seem to appear in the results of <code>dir()</code> for any classes.</p>
  
  <p>By definition, <code>dir()</code> recursively gets all the attributes and methods all the way up the chain of inheritance, from the passed-in class to the base class, <code>object</code>. Based on this definition, I assumed that the attribute <code>__mro__</code> is not actually an attribute of any classes along the aforementioned inheritance chain.</p>
  
  <p>Later, I stumbled upon the class <code>type</code> and found that it contained the <code>mro</code> method in its method descriptions <code>help(type)</code>. I thought, a class must inherit from <code>type</code> to use this method. So I did a test with a new style class called <code>Apple</code>:</p>
  
  <ul>
  <li><code>isinstance(Apple, type)</code> returns <code>True</code></li>
  <li><code>issubclass(Apple, type)</code> returns <code>False</code></li>
  <li>even <code>isinstance(object, type)</code> returns <code>True</code></li>
  </ul>
  
  <p>Strangely, <code>Apple</code> does not inherit from <code>type</code>; instead, it is an instance of it. This confuses me a lot: I do not know where does the <code>__mro__</code> come from now.</p>