类python的不同行为

时间:2017-06-12 11:17:58

标签: python python-2.7

>>> class MyKlass:
...     pass
... 
>>> 
>>> 
>>> a = MyKlass()
>>> 
>>> type(a)
<type 'instance'>
>>> type(MyKlass)
<type 'classobj'>
>>> 
>>> 
>>> class MyKlass(object):
...     pass
... 
>>> 
>>> a = MyKlass()
>>> 
>>> type(a)
<class '__main__.MyKlass'>
>>> type(MyKlass)
<type 'type'>
>>> 

在上面的代码中,一个类不是从任何基类继承而另一个是从object基类继承的。

如果你没有明确地继承,我已经在某处读过,默认的父类是object,我是对的吗?

但是如果默认值是object,为什么两个类的类型都不同?上述不同行为何时以及如何有用?

1 个答案:

答案 0 :(得分:1)

从Python 3.x开始,所有类都隐式地扩展object

但这不适用于Python 2.x.看看New-style and classic classes。在较旧的Python版本中,您必须显式扩展object