python中对象和类型之间的区别是什么

时间:2018-05-10 09:53:24

标签: python object new-style-class

我们在Python 2.x中有两种类,因为所有类都知道旧样式类和新样式类

class OldStyle:
    pass

Oldstyle类的type个实例始终为instance

class NewStyle(object):
    pass

新样式类具有method descriptorssupergetattribute等优势, 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)也是typetype(object)也是type }

为什么我们不能直接从type继承新的样式类?

我们是否可以假设以下几点来区分objecttype

  1. 如果我们从type继承/创建一个类,如下所示,我们最终会创建一个元类? (一切都是python中的一个对象,包括类,是其他类的对象,type
  2. class NewStyle(type): pass

    当Python解释器看到上面的代码时,它会创建一个类型为class(类对象)的对象/实例,其名称为NewStyle(不是普通实例,而是类对象)

    1. 如果我们从object继承/创建一个类,它将创建一个类的普通实例/对象
    2. 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来创建实例?

0 个答案:

没有答案
相关问题