先看一段代碼
# -*- coding:UTF-8 -*-
__autor__ = 'zhouli'
__date__ = '2018/11/13 18:40'
a = 1
b = 'abc'
print(type(1))
print(type(int))
print(type(b))
print(type(str))
運作的結果為:
<class 'int'>
<class 'type'>
<class 'str'>
<class 'type'>
得出如下結論,1是int類型,而int是一個type類型,int本身也是一個對象,是由type這個類來生成的
是以關系如下:type----》》》int----》》》1
推廣:type----》》》class----》》》obj
那如果類的執行個體化會是神馬東西呢?
看代碼:
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'>
顯而易見的是對于type(Student)得到的是<class 'type'>也是符合上面的邏輯的
再比如:
a=[1, 2]
>>> type(a)
<class 'list'>
>>>type(list)
<class 'type'>
更加論證了這個結論:type----》》》class----》》》obj
而MyStudent.__bases__得到結果是:(<class '__main__.Student'>,)
英文MyStudent是繼承Student這個類的
是以有了這個概念 object類是最頂層的基類
而 type本身也是一個類,但是提示type也是一個對象
type的父類type.__bases__是object
而type(object)居然是<class 'type'> 這個說明了什麼,
object是由type産生,但是type卻是繼承了object
下面看一張圖:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnL0cjNxETN2cjMx0yM3cDOzQDM5EzMxETM4EDMy0SO0MjNyMTMvwVMxgTMwIzLclDNzYjMzEzLcd2bsJ2Lc12bj5ycn9Gbi52YugTMwIzZtl2Lc9CX6MHc0RHaiojIsJye.png)
在這張圖中可以分為三類
左邊是type,中間是繼承關系,最右邊的是執行個體;
最後附上完整版代碼
# -*- coding:UTF-8 -*-
__autor__ = 'zhouli'
__date__ = '2018/11/13 18:40'
a = 1
b = 'abc'
print(type(1)) # <class 'int'>
print(type(int)) # <class 'type'>
print(type(b)) # <class 'str'>
print(type(str)) # <class 'type'>
class Student:
pass
class MyStudent(Student):
pass
stu = Student()
print(type(stu)) # <class '__main__.Student'>
print(type(Student)) # <class 'type'>
print(int.__bases__) # (<class 'object'>,)
print(str.__bases__) # (<class 'object'>,)
print(Student.__bases__) # (<class 'object'>,)
print(MyStudent.__bases__) # (<class '__main__.Student'>,)
print(type.__bases__) # (<class 'object'>,)
print(object.__bases__) # ()
print(type(object)) # <class 'type'>
轉載于:https://www.cnblogs.com/zhoulixiansen/p/9954050.html