先看一段代码
#-*- coding:UTF-8 -*-
__autor__ = 'zhouli'
__date__ = '2018/11/13 18:40'a= 1b= 'abc'
print(type(1))print(type(int))print(type(b))print(type(str))
运行的结果为:
得出如下结论,1是int类型,而int是一个type类型,int本身也是一个对象,是由type这个类来生成的
所以关系如下:type----》》》int----》》》1
推广:type----》》》class----》》》obj
那如果类的实例化会是神马东西呢?
看代码:
classStudent:pass
classMyStudent(Student):passstu=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))
得到的结果如下:
(,)
(,)
(,)
(,)
(,)
()
显而易见的是对于type(Student)得到的是也是符合上面的逻辑的
再比如:
a=[1, 2]>>>type(a)
>>>type(list)
更加论证了这个结论:type----》》》class----》》》obj
而MyStudent.__bases__得到结果是:(,)
英文MyStudent是继承Student这个类的
所以有了这个概念 object类是最顶层的基类
而 type本身也是一个类,但是提示type也是一个对象
type的父类type.__bases__是object
而type(object)居然是 这个说明了什么,
object是由type产生,但是type却是继承了object
下面看一张图:
在这张图中可以分为三类
左边是type,中间是继承关系,最右边的是实例;
最后附上完整版代码
#-*- coding:UTF-8 -*-
__autor__ = 'zhouli'
__date__ = '2018/11/13 18:40'a= 1b= 'abc'
print(type(1)) #
print(type(int)) #
print(type(b)) #
print(type(str)) #
classStudent:pass
classMyStudent(Student):passstu=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)) #