>>> class Hello:
pass
and
>>> isinstance(Hello,object)
True
>>> issubclass(Hello,object)
False
>
My answer pertains to Python 3.
To expand upon cbare's answer, the code below was helpful for me.
>>> class X:
... pass
...
>>> class Y(X):
... pass
...
>>> x = X()
>>> y = Y()
>>> isinstance(x, X) # is object x an instance of class X (or any subclass)?
True
>>> isinstance(x, Y) # is object x an instance of class Y (or any subclass)?
False
>>> isinstance(y, X) # is object y an instance of class X (or any subclass)?
True
>>> isinstance(y, Y) # is object y an instance of class Y (or any subclass)?
True
>>> issubclass(X, X) # is class X a subclass of X (including class X)?
True
>>> issubclass(X, Y) # is class X a subclass of Y (including class Y)?
False
>>> issubclass(Y, X) # is class Y a subclass of X (including class X)?
True
>>> issubclass(Y, Y) # is class Y a subclass of Y (including class Y)?
True
>>> issubclass(type(x), X) # is class of object x a subclass of X (including class X)?
True
>>> issubclass(type(x), Y) # is class of object x a subclass of Y (including class Y)?
False
>>> issubclass(type(y), X) # is class of object y a subclass of X (including class X)?
True
>>> issubclass(type(y), Y) # is class of object y a subclass of Y (including class Y)?
True
>>> issubclass(x.__class__, X) # is class of object x a subclass of X (including class X)?
True
>>> issubclass(x.__class__, Y) # is class of object x a subclass of Y (including class Y)?
False
>>> issubclass(y.__class__, X) # is class of object y a subclass of X (including class X)?
True
>>> issubclass(y.__class__, Y) # is class of object y a subclass of Y (including class Y)?
True
We can see that isinstance(object, class)
respects inheritance / subclasses correctly.