type和object
Posted lshedward
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了type和object相关的知识,希望对你有一定的参考价值。
一.定义
1.object是所有新式类的父类
2.type是所有类的类
二.解析
下面通过代码来比较一下object和type的关系(__class__获取所属的类,__bases__获取父类)
print(‘type‘, type.__class__, type.__bases__) 输出: object <class ‘type‘> () type <class ‘type‘> (<class ‘object‘>,)
可以得出以下结论:
1.type和object都属于type类 class ‘type’
2.object类的父类为空
3.type的父类为object类 class ‘object’
在看一下python的基本数据类型list、dict和tuple的情况
print(‘list‘, list.__class__, list.__bases__) print(‘dict‘, dict.__class__, dict.__bases__) print(‘tuple‘, tuple.__class__, tuple.__bases__) 输出: list <class ‘type‘> (<class ‘object‘>,) dict <class ‘type‘> (<class ‘object‘>,) tuple <class ‘type‘> (<class ‘object‘>,)
可以得出以下结论:
1.它们都属于type类 class ‘type’
2.父类都是object类 class ‘object’
比较一个实例化的list:
li = [1, 2] print(li.__class__) # <class ‘list‘> print(li.__bases__) # AttributeError: ‘list‘ object has no attribute ‘__bases__‘
在实例化一个自定义类
class MyClass: pass print(‘MyClass‘, MyClass.__class__, MyClass.__bases__) print(‘*‘*50) print(‘MyClass Obj‘, MyClass().__class__) print(‘MyClass Obj‘, MyClass().__bases__) 输出: MyClass <class ‘type‘> (<class ‘object‘>,) ************************************************** MyClass Obj <class ‘__main__.MyClass‘>
可以得出:
-
自定义类本身属于type类 class ‘type’ ,并且父类是object类 class ‘object’
-
自定义类的实例化的对象属于类本身,并且对象不存在父类属性
比较自定义元类:
class MyMetaClass(type): pass print(‘MyMetaClass‘, MyMetaClass.__class__, MyMetaClass.__bases__) 输出: MyMetaClass <class ‘type‘> (<class ‘type‘>,)
三.总结
type元类的类则是由type元类自身创建的。object类是由元类type创建的,但是type类又继承了object类。
图示:虚线表示源是目标的实例,实线表示源是目标的子类
以上是关于type和object的主要内容,如果未能解决你的问题,请参考以下文章
Vue报错:Uncaught TypeError: Cannot assign to read only property 'exports' of object 的解决方法(代码片段
Failed to convert property value of type ‘java.lang.String‘ to required type ‘int‘ for property(代码片段
SpringBoot启动报错“Consider defining a bean of type ‘xxx.mapper.UserMapper‘ in your configuration.“(代码片段