class Foo:pass 与class Foo(object):pass的区别

如题

>>> class Foo:pass

>>> foo = Foo()
>>> type(Foo)
<type 'classobj'>
>>> type(foo)
<type 'instance'>
>>> class Bar(object):pass

>>> bar = Bar()
>>> type(Bar)
<type 'type'>
>>> type(bar)
<class '__main__.Bar'>

 

 

为何type(Foo) 返回是<type 'classobj'> 

而 type(Bar) <type 'type'>

type(foo) 返回<type 'instance'> 而type(bar) 返回<class '__main__.Bar'>

这两个的差异是一个继承了 builtin.object,获取了一些额外的属性和方法,而一个没有。
比如type(object)的返回值本身就是
你可以这么看看

dir(object)
dir(Foo)
dir(Bar)