python中判斷類(lèi)型函數(shù)isinstance()示例詳解
函數(shù)isinstance()可以判斷一個(gè)變量的類(lèi)型,既可以用在Python內(nèi)置的數(shù)據(jù)類(lèi)型如str、list、dict,也可以用在我們自定義的類(lèi),它們本質(zhì)上都是數(shù)據(jù)類(lèi)型。
假設(shè)有如下的 Person、Man和 Woman的定義及繼承關(guān)系如下:
class Person(object): def __init__(self, name, gender): self.name = name self.gender = gender class Man(Person): def __init__(self, name, gender, score): super(Man, self).__init__(name, gender) self.score = score class Woman(Person): def __init__(self, name, gender, course): super(Woman, self).__init__(name, gender) self.course = course p = Person('Tim', 'Male') m = Man('Bob', 'Male', 88) w = Woman('Alice', 'Female', 'English')
當(dāng)我們拿到變量 p、m、w 時(shí),可以使用 isinstance 判斷類(lèi)型:
>>> isinstance(p, Person) True # p是Person類(lèi)型 >>> isinstance(p, man) False # p不是Man類(lèi)型 >>> isinstance(p, Woman) False # p不是Woman類(lèi)型
這說(shuō)明在繼承鏈上,一個(gè)父類(lèi)的實(shí)例不能是子類(lèi)類(lèi)型,因?yàn)樽宇?lèi)比父類(lèi)多了一些屬性和方法。
我們?cè)倏疾?m :
>>> isinstance(m, Person) True # m是Person類(lèi)型 >>> isinstance(m, Man) True # m是Man類(lèi)型 >>> isinstance(m, Woman) False # m不是Woman類(lèi)型
m 是Man類(lèi)型,不是Woman類(lèi)型,這很容易理解。但是,m也是Person類(lèi)型,因?yàn)?strong>Man繼承自Person,雖然它比Person多了一些屬性和方法,但是,把 m 看成Person的實(shí)例也是可以的。
這說(shuō)明在一條繼承鏈上,一個(gè)實(shí)例可以看成它本身的類(lèi)型,也可以看成它父類(lèi)的類(lèi)型。
任務(wù)
請(qǐng)根據(jù)繼承鏈的類(lèi)型轉(zhuǎn)換,依次思考 w是否是 Person,Man,Woman,object 類(lèi)型,并使用isinstance()判斷來(lái)驗(yàn)證您的答案。
class Person(object): def __init__(self, name, gender): self.name = name self.gender = gender class Man(Person): def __init__(self, name, gender, score): super(Man, self).__init__(name, gender) self.score = score class Woman(Person): def __init__(self, name, gender, course): super(Woman, self).__init__(name, gender) self.course = course w = Woman('Alice', 'Female', 'English') print (isinstance(w,Person)) print (isinstance(w, Man)) print (isinstance(w, Woman)) print (isinstance(w, object )) #運(yùn)行結(jié)果 #True #False #True #True
到此這篇關(guān)于python中判斷類(lèi)型函數(shù)isinstance()示例詳解的文章就介紹到這了,更多相關(guān)python判斷類(lèi)型函數(shù)isinstance()內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
對(duì)比分析BN和dropout在預(yù)測(cè)和訓(xùn)練時(shí)區(qū)別
這篇文章主要為大家介紹了對(duì)比分析BN和dropout在預(yù)測(cè)和訓(xùn)練時(shí)區(qū)別,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05Python圖像的增強(qiáng)處理操作示例【基于ImageEnhance類(lèi)】
這篇文章主要介紹了Python圖像的增強(qiáng)處理操作,結(jié)合實(shí)例形式分析了使用ImageEnhance類(lèi)處理圖片的亮度、對(duì)比度、色度以及銳度等相關(guān)操作技巧,需要的朋友可以參考下2019-01-01一篇文章搞懂Python的類(lèi)與對(duì)象名稱(chēng)空間
這篇文章主要給大家介紹了關(guān)于Python的類(lèi)與對(duì)象名稱(chēng)空間的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-12-12通過(guò)?for?循環(huán)比較?Python?與?Ruby?的編程區(qū)別
這篇文章主要介紹了通過(guò)?for?循環(huán)比較?Python?與?Ruby?的編程區(qū)別,Ruby?與?Python?之間的差異在很大程度上可通過(guò)for循環(huán)看出本質(zhì),下文詳細(xì)介紹需要的小伙伴可以參考一下2022-05-05Win8.1下安裝Python3.6提示0x80240017錯(cuò)誤的解決方法
這篇文章主要為大家詳細(xì)介紹了Win8.1下安裝Python3.6提示0x80240017錯(cuò)誤的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07python結(jié)合opencv實(shí)現(xiàn)人臉檢測(cè)與跟蹤
在Python下用起來(lái)OpenCV很爽,代碼很簡(jiǎn)潔,很清晰易懂。使用的是Haar特征的分類(lèi)器,訓(xùn)練之后得到的數(shù)據(jù)存在一個(gè)xml中。下面我們就來(lái)詳細(xì)談?wù)劇?/div> 2015-06-06Python報(bào)表自動(dòng)化之從數(shù)據(jù)到可視化一站式指南
在現(xiàn)代數(shù)據(jù)驅(qū)動(dòng)的世界中,生成清晰、有用的報(bào)表對(duì)于業(yè)務(wù)決策至關(guān)重要,Python作為一門(mén)強(qiáng)大的編程語(yǔ)言,提供了豐富的庫(kù)和工具,使得報(bào)表自動(dòng)化變得輕而易舉,本文將詳細(xì)介紹如何利用Python從數(shù)據(jù)處理到可視化,實(shí)現(xiàn)報(bào)表自動(dòng)化的全過(guò)程2024-01-01最新評(píng)論