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ù)?? | ??作用對象?? | ??檢查目標?? | ??典型場景?? |
|---|---|---|---|
| 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)文章
解決jupyter notebook圖片顯示模糊和保存清晰圖片的操作
這篇文章主要介紹了解決jupyter notebook圖片顯示模糊和保存清晰圖片的操作方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-04-04
細數(shù)nn.BCELoss與nn.CrossEntropyLoss的區(qū)別
今天小編就為大家整理了一篇細數(shù)nn.BCELoss與nn.CrossEntropyLoss的區(qū)別,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02
Python基于pygame實現(xiàn)圖片代替鼠標移動效果
這篇文章主要介紹了Python基于pygame實現(xiàn)圖片代替鼠標移動效果,可實現(xiàn)將鼠標箭頭轉(zhuǎn)換成圖形的功能,涉及pygame圖形操作的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-11-11

