Python的type()
函數(shù)主要有以下幾個功能:
type()
函數(shù)來獲取一個對象的類型,返回的結(jié)果是一個類型對象。例如,type(10)
返回<class 'int'>
,表示10是一個整數(shù)對象。print(type(10)) # <class 'int'>
print(type("hello")) # <class 'str'>
print(type([1, 2, 3])) # <class 'list'>
type()
函數(shù)來創(chuàng)建一個新的類型對象。通過傳入三個參數(shù):類型名稱、基類(可以是多個基類的元組)和屬性字典,可以動態(tài)創(chuàng)建一個新的類。這種方式創(chuàng)建的類是動態(tài)類型,可以在運行時創(chuàng)建和修改。MyClass = type('MyClass', (object,), {'x': 1, 'y': 2}) # 創(chuàng)建一個名為MyClass的類,繼承自object,并有x和y兩個屬性
obj = MyClass() # 創(chuàng)建MyClass的實例
print(obj.x) # 1
print(obj.y) # 2
type()
函數(shù)和isinstance()
函數(shù)來判斷一個對象的類型是否為某個類或其子類。isinstance()
函數(shù)會返回一個布爾值,表示對象是否為指定類或其子類的實例。print(isinstance(10, int)) # True
print(isinstance(10, float)) # False
print(isinstance("hello", str)) # True
print(isinstance([1, 2, 3], list)) # True
type()
函數(shù)和callable()
函數(shù)來判斷一個對象是否可調(diào)用(即是否是函數(shù))。callable()
函數(shù)會返回一個布爾值,表示對象是否可以被調(diào)用(即是否是函數(shù)或?qū)崿F(xiàn)了__call__
方法的對象)。def my_func():
pass
print(type(my_func)) # <class 'function'>
print(callable(my_func)) # True
需要注意的是,type()
函數(shù)是內(nèi)置函數(shù),但是它也是一個類,可以被繼承。因此,type()
函數(shù)可以用于自定義元類的創(chuàng)建。