Python 高级编程系列__02:type、object、class 的关系

通过以下代码可以了解 type、object、class 的关系:

a=1
b="abc"

print (type (1))
print (type (int))
print (type (b))
print (type (str))

输出:
<class 'int'>
<class 'type'>
<class 'str'>
<class 'type'>

这说明:
type -> int -> 1
type -> class -> object

type这个类生成一个类型,这个类型再生成一个对象。
得出结论:类是由type这个类生成的对象。

object是最顶层的基类,所有的类推算到最后,它们的基类都是object。

可以再看下面的例子:

class Student:
 pass

class Mystudent (Student):
 pass

stu = Student()
print(type (stu))
print(type (Student))

print(int.__bases__)
print(str.__bases__)
print(Student.__bases__)
print(Mystudent.__bases__)
print(type.__bases__)
print(object.__bases__)
print(type  (object))

输出:
<class '__main__.Student'>
<class 'type'>

(<class 'object'>,)
(<class 'object'>,)
(<class 'object'>,)
(<class '__main__.Student'>,)
(<class 'object'>,)
()
<class 'type'>

结论:
1、自定义的类,他的类型也是type。
2、所有的类的最顶层的基类,是object。
3、object 的上一层,没有了,object 就是最顶层。
4、type 本身是一个类,同时也是一个对象,它的父类是 object。
5、object 这个类是由 type 生成的。
6、所有的类,都是有 type 生成的, 包括 type 也是由 type 生成的。

list 是一个类,是type生成的类,也是一个对象,object 的对象。

object 是 type 的一个实例,type 是继承自 object。

object 是所有类的一个基类。

一切皆对象,一切皆继承自 object 。

所有的类都是由 type 创建出来的。

这就是 Python 的设计理念:一切皆对象。
既然所有的东西都是对象,那么函数、类都是对象,那么就都可以修改,如果是Java,虽然也能改,但是特别麻烦。
Python 的两套体系,一个是 type,一个是 object,可以很好地实现这一点。

原文地址:https://www.cnblogs.com/bigband/p/13643087.html