python中判斷類型函數(shù)isinstance()示例詳解
函數(shù)isinstance()可以判斷一個變量的類型,既可以用在Python內(nèi)置的數(shù)據(jù)類型如str、list、dict,也可以用在我們自定義的類,它們本質(zhì)上都是數(shù)據(jù)類型。
假設(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')
當我們拿到變量 p、m、w 時,可以使用 isinstance 判斷類型:
>>> isinstance(p, Person) True # p是Person類型 >>> isinstance(p, man) False # p不是Man類型 >>> isinstance(p, Woman) False # p不是Woman類型
這說明在繼承鏈上,一個父類的實例不能是子類類型,因為子類比父類多了一些屬性和方法。
我們再考察 m :
>>> isinstance(m, Person) True # m是Person類型 >>> isinstance(m, Man) True # m是Man類型 >>> isinstance(m, Woman) False # m不是Woman類型
m 是Man類型,不是Woman類型,這很容易理解。但是,m也是Person類型,因為Man繼承自Person,雖然它比Person多了一些屬性和方法,但是,把 m 看成Person的實例也是可以的。
這說明在一條繼承鏈上,一個實例可以看成它本身的類型,也可以看成它父類的類型。
任務(wù)
請根據(jù)繼承鏈的類型轉(zhuǎn)換,依次思考 w是否是 Person,Man,Woman,object 類型,并使用isinstance()判斷來驗證您的答案。
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 )) #運行結(jié)果 #True #False #True #True
到此這篇關(guān)于python中判斷類型函數(shù)isinstance()示例詳解的文章就介紹到這了,更多相關(guān)python判斷類型函數(shù)isinstance()內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python常規(guī)方法實現(xiàn)數(shù)組的全排列
這篇文章主要介紹了python常規(guī)方法實現(xiàn)數(shù)組的全排列,實例分析了全排列的概念及Python常規(guī)實現(xiàn)技巧,需要的朋友可以參考下2015-03-03python如何實現(xiàn)異步調(diào)用函數(shù)執(zhí)行
這篇文章主要介紹了python如何實現(xiàn)異步調(diào)用函數(shù)執(zhí)行,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友可以參考下2019-07-07python 實現(xiàn)以相同規(guī)律打亂多組數(shù)據(jù)
這篇文章主要介紹了python 實現(xiàn)以相同規(guī)律打亂多組數(shù)據(jù),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03python Matplotlib畫圖之調(diào)整字體大小的示例
本篇文章主要介紹了python Matplotlib畫圖之調(diào)整字體大小的示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-11-11pycharm創(chuàng)建scrapy項目教程及遇到的坑解析
這篇文章主要介紹了pycharm創(chuàng)建scrapy項目教程及遇到的坑解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友可以參考下2019-08-08python執(zhí)行數(shù)據(jù)庫的查詢操作實例講解
在本篇文章里小編給大家整理了一篇關(guān)于python執(zhí)行數(shù)據(jù)庫的查詢操作實例講解內(nèi)容,有需要的朋友們可以參考學(xué)習下。2021-10-10