我们在Python 2.x中有两种类,因为所有类都知道旧样式类和新样式类
class OldStyle:
pass
Oldstyle类的type
个实例始终为instance
class NewStyle(object):
pass
新样式类具有method descriptors
,super
,getattribute
等优势,
NewStyle类的type
实例是类名本身
当你检查NewStyle类的类型时,object
的类型和类型也是类型
In [5]: type(NewStyle)
Out[5]: type
In [6]: type(object)
Out[6]: type
In [7]: type(type)
Out[7]: type
那么从object
继承新样式类的概念是什么,正如我们在上面所看到的那样type(type)
也是type
而type(object)
也是type
}
为什么我们不能直接从type
继承新的样式类?
我们是否可以假设以下几点来区分object
和type
?
type
继承/创建一个类,如下所示,我们最终会创建一个元类? (一切都是python中的一个对象,包括类,是其他类的对象,type
) class NewStyle(type):
pass
当Python解释器看到上面的代码时,它会创建一个类型为class
(类对象)的对象/实例,其名称为NewStyle(不是普通实例,而是类对象)
object
继承/创建一个类,它将创建一个类的普通实例/对象 class NewStyle(object):
pass
isinstance(NewStyle, type)
obj = NewStyle()
print isinstance(obj, NewStyle) # True
print isinstance(NewStyle, type) #True
print isinstance(NewStyle, object) #True
print isinstance(object, type) # True
print isinstance(type, object) # True
最后我们使用type
创建类,但我们使用object
来创建实例?