關于type的了解
大家都知道,type是用來傳回對象類型的,數字100是int類型,"hi"是str類型。
type(100)
#<class 'int'>
type("hi")
#<class 'str'>
那麼int和str是什麼類型呢?驚奇的發現,int和str都是type類型。
type(int)
#<class 'type'>
type(str)
#<class 'type'>
int和str都是python中内置的類,那我們自己建立的類呢?stu是Student類型,這個沒問題。但是,Student居然也是type類型的。
是以,我們可以得出結論:類是type類的執行個體對象。也就是說,不管是python中内置的int、str類,還是我們自己建立的Student類,它們都是type類的執行個體對象。
class Student():
def __init__(self):
pass
stu = Student()
print(type(stu)) #<class '__main__.Student'>
print(type(Student)) #<class 'type'>
關于object的了解
我們知道,所有類都繼承于object。
print(int.__bases__)
#(<class 'object'>,)
print(Student.__bases__)
#(<class 'object'>,)
既然所有類都繼承于object,那type類自然也繼承于object了。而object的基類是空,也就是說,object沒有繼承其他的類了。
print(type.__bases__)
#(<class 'object'>,)
print(object.__bases__)
#()
最後,我們發現object也是type類型,也就是說,object也是type的執行個體對象。
print(type(object))
#<class 'type'>
總結
看到這裡,相信很多盆友已經暈了。
其實。。。用一句話概括就是這樣:一切類都是type的執行個體 ,一切都繼承object類
用圖描述就是這樣:
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHLzMGROJTQq1UeRpHW4Z0MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL2ITMyMzNxMjMzITMxgTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
(圖檔來自波比老師)