python中判斷類型函數isinstance()示例詳解
函數isinstance()可以判斷一個變量的類型,既可以用在Python內置的數據類型如str、list、dict,也可以用在我們自定義的類,它們本質上都是數據類型。
假設有如下的 Person、Man和 Woman的定義及繼承關系如下:
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是否是 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 ))
#運行結果
#True
#False
#True
#True到此這篇關于python中判斷類型函數isinstance()示例詳解的文章就介紹到這了,更多相關python判斷類型函數isinstance()內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Python中join()方法完全使用指南(參數要求與常見用法)
join()是Python中字符串操作的核心方法之一,但許多開發(fā)者在使用時經常遇到TypeError或意外結果,本文將全面解析' '.join()的參數要求,通過實際示例展示正確用法,并總結常見問題的解決方案,需要的朋友可以參考下2025-06-06
python txt中的文件,逐行讀取并且每行賦值給變量問題
這篇文章主要介紹了python txt中的文件,逐行讀取并且每行賦值給變量問題,具有很好的參考價值,希望對大家有所幫助。2023-02-02
python transpose()處理高維度數組的軸變換的實現
本文主要介紹了python transpose()處理高維度數組的軸變換的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-09-09

