天天看點

python中 type object class之間的關系

關于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類

用圖描述就是這樣:

python中 type object class之間的關系

(圖檔來自波比老師)