2017-06-12 52 views
0
>>> 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基类继承的。python类的不同行为

我读的地方,如果你不明确的继承,默认的父类是object,对吗?

但是如果默认是object,为什么键入到两个类都不一样?何时以及如何将这些不同的行为有用?

+1

旧式和新式类之间的差异只存在在Python 2.x版本 – guidot

+1

从第一句[此页](https://wiki.python.org/moin/NewClassVsClassicClass)关于“新”样式类(你来自哪里,'object'继承)和“老”的风格类(没有按” t继承自'object'):“A”New Class“是在现代Python中创建类的推荐方式。” “现代”一词的意思是Python版本2.2和2.7,在Python 3中,所有的类都是新风格的类。 –

回答

1

由于Python 3.x,所有类都隐式扩展object

但是这不适用于Python 2.x.看看New-style and classic classes。在较早的Python版本,你必须明确地扩展object