python中isinstance()和insubclass()的實現(xiàn)
??isinstance()和issubclass()的功能與用法??
??1.isinstance(obj, classinfo)??
??功能??:檢查對象 obj
是否是 classinfo
類(或其子類)的實例。
??返回值??:True
或 False
。
??用法??:
class Animal: pass class Dog(Animal): pass dog = Dog() print(isinstance(dog, Dog)) # True(直接類) print(isinstance(dog, Animal)) # True(父類) print(isinstance(dog, str)) # False(無關(guān)類)
??特點??:
支持檢查多個類(元組形式):
print(isinstance(dog, (Dog, Animal, str))) # True(匹配任一即可)
適用于動態(tài)類型校驗(如函數(shù)參數(shù)驗證)。
??2.issubclass(cls, classinfo)??
??功能??:檢查類 cls
是否是 classinfo
的子類(或自身)。
??返回值??:True
或 False
。
??用法??:
class Animal: pass class Dog(Animal): pass print(issubclass(Dog, Animal)) # True(子類) print(issubclass(Dog, Dog)) # True(自身) print(issubclass(Dog, object)) # True(所有類繼承自 object) print(issubclass(Animal, Dog)) # False
??特點??:
同樣支持元組檢查多類:
print(issubclass(Dog, (Animal, str))) # True
常用于類關(guān)系設(shè)計或框架中約束繼承關(guān)系。
??核心區(qū)別??
??函數(shù)?? | ??作用對象?? | ??檢查目標(biāo)?? | ??典型場景?? |
---|---|---|---|
isinstance() | 對象 (obj) | 是否是某類的實例 | 運行時類型驗證 |
issubclass() | 類 (cls) | 是否是某類的子類 | 設(shè)計時繼承關(guān)系校驗 |
??示例場景??:
def process_animal(animal): if not isinstance(animal, Animal): raise TypeError("必須傳入 Animal 或其子類實例") # 處理邏輯... class Bird(Animal): pass process_animal(Bird()) # 通過 process_animal("abc") # 報錯
到此這篇關(guān)于python中isinstance()和insubclass()的實現(xiàn)的文章就介紹到這了,更多相關(guān)python isinstance() insubclass()內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python 爬蟲學(xué)習(xí)筆記之正則表達(dá)式
正則表達(dá)式是用來匹配字符串非常強大的工具,在其他編程語言中同樣有正則表達(dá)式的概念,Python同樣不例外,利用了正則表達(dá)式,我們想要從返回的頁面內(nèi)容提取出我們想要的內(nèi)容就易如反掌了。2016-09-09解決jupyter notebook圖片顯示模糊和保存清晰圖片的操作
這篇文章主要介紹了解決jupyter notebook圖片顯示模糊和保存清晰圖片的操作方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-04-04細(xì)數(shù)nn.BCELoss與nn.CrossEntropyLoss的區(qū)別
今天小編就為大家整理了一篇細(xì)數(shù)nn.BCELoss與nn.CrossEntropyLoss的區(qū)別,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02運籌學(xué)-Python實現(xiàn)圖論與最短距離
需要求解任意兩個節(jié)點之間的最短距離,使用?Floyd?算法,只要求解單源最短路徑問題,有負(fù)權(quán)邊時使用?Bellman-Ford?算法,沒有負(fù)權(quán)邊時使用?Dijkstra?算法,本節(jié)我們只討論Dijkstra?算法,需要的朋友可以參考一下2022-01-01Python基于pygame實現(xiàn)圖片代替鼠標(biāo)移動效果
這篇文章主要介紹了Python基于pygame實現(xiàn)圖片代替鼠標(biāo)移動效果,可實現(xiàn)將鼠標(biāo)箭頭轉(zhuǎn)換成圖形的功能,涉及pygame圖形操作的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-11-11