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

