@
GeruzoniAnsasu 关于你的这个问题确实能把人绕晕了。我以前写一篇博客详细说明过。
Python 中所有东西都是对象,比较特殊的是:object 和 type 是 python 中的两个源对象,它们是互相依赖对方来定义,不能分割来说,就如同讨论“先有鸡还是现有蛋”,一样让人蛋疼。
先介绍有两个黑魔法在后面要用到:
obj.__bases__ 指这个对象的父类,就是说从谁继承来的。
obj.__class__ 指这个对象的类型,类的类型是 type
Python 的面向对象系统有两条线索。
1.继承关系也就是父类和子类的关系( the subclass-superclass relationship ),以 object 为起点;
所有对象的父类是 object,因此 object 是没有父类的。
>>> object.__bases__
()
type 也是 object 的子类
>>> issubclass(type, object)
True
>>> type.__bases__
(<class 'object'>,)
2.类型和实例之间的关系( the type-instance relationship ),以 type 为起点。
type 是自身的实例,或说 type (对象 object )的 class (类型 type )是 type
>>> isinstance(type, type)
True
>>> type(type)
<class 'type'>
>>> type.__class__
<class 'type'>
就连 object 都是 type 的实例
>>> isinstance(object, type)
True
最后总结一下:
type 是一个比较特殊的类,这里引出另一概念元类,普通类实例化出来一个对象,但是元类实例化出来的是一个类,
int、float、str、boolean、tuple、dict、set 等内置的数据类型其实也就是内置的类都是 type 实例。
>>> isinstance(int, type)
True
>>> int.__class__
<class 'type'>
>>>
object 是所有对象(包括类对象)的父类,int、float、str、boolean、tuple、dict、set 内置类都是 object 子类。
>>> int.__bases__
(<class 'object'>,)
>>> issubclass(int, object)
True
---------------------
作者:混沌鳄鱼
来源:CSDN
原文:
https://blog.csdn.net/xpresslink/article/details/82494256 版权声明:本文为博主原创文章,转载请附上博文链接!