python類型isinstance
Ⅰ isinstance()函數
isinstance() 是 python 中用於驗證對象類型是否符合指定類型的內置函數。使用時,需輸入兩個參數:
第一個參數是對象,即要檢查的實例。
第二個參數是類信息,可以是直接或間接繼承的類、基本類型或它們的組合元組。
函數返回值取決於對象的類型與類信息是否匹配。若匹配,則返回 True;否則返回 False。
在檢查對象類型時,isinstance() 考慮繼承關系。如果對象是指定類型的子類實例,函數也會返回 True。這與 type() 不同,type() 不會將子類視為父類類型,不考慮繼承。
此外,classinfo 參數允許為類型元組。如果對象是類型元組中的任意一個類型的實例,函數會返回 True。
簡言之,isinstance() 是 Python 中處理對象類型的關鍵工具,用於判斷對象是否屬於指定類型。
Ⅱ python涓鍒ゆ柇鏁板肩被鍨
Python涓鍒ゆ柇鏁板肩被鍨
鍦≒ython涓錛屽垽鏂涓涓鍙橀噺鏄鍚︿負鏁板肩被鍨嬪彲浠ラ氳繃澶氱嶆柟娉曞疄鐜般傚父鐢ㄧ殑鏂規硶鍖呮嫭浣跨敤鍐呯疆鍑芥暟`isinstance`鍜宍type`銆備笅闈㈠皢璇︾粏浠嬬粛榪欎袱縐嶆柟娉曘
浣跨敤`isinstance`鍑芥暟鍒ゆ柇鏁板肩被鍨
`isinstance`鍑芥暟鏄疨ython鍐呯疆鐨勪竴涓鍑芥暟錛屽彲浠ョ敤鏉ユ鏌ヤ竴涓鍙橀噺鏄鍚﹀睘浜庣壒瀹氱殑綾誨瀷銆傚傛灉瑕佸垽鏂涓涓鍙橀噺鏄鍚︿負鏁板肩被鍨嬶紝鍙浠ヤ嬌鐢ㄥ備笅鏂瑰紡錛
紺轟緥浠g爜錛
python
num = 10
if isinstance): # 鍒ゆ柇鏄鍚︿負鏁存暟鎴栨誕鐐規暟綾誨瀷
else:
鍦ㄤ笂闈㈢殑浠g爜涓錛宍isinstance`鍑芥暟鐨勭涓涓鍙傛暟鏄瑕佹鏌ョ殑鍙橀噺錛岀浜屼釜鍙傛暟鏄涓涓鍏冪粍錛屽寘鍚浜嗚佹鏌ョ殑綾誨瀷銆傚湪榪欎釜渚嬪瓙涓錛屾垜浠媯鏌ヤ簡鍙橀噺`num`鏄鍚︿負鏁存暟鎴栨誕鐐規暟銆傚傛灉`num`鏄榪欎袱縐嶇被鍨嬩箣涓錛岄偅涔堟潯浠舵垚絝嬶紝杈撳嚭“鍙橀噺鏄鏁板肩被鍨”銆傚惁鍒欙紝杈撳嚭“鍙橀噺涓嶆槸鏁板肩被鍨”銆
浣跨敤`type`鍑芥暟鍒ゆ柇鏁板肩被鍨
鍙︿竴縐嶅垽鏂鏁板肩被鍨嬬殑鏂規硶鏄浣跨敤`type`鍑芥暟銆傝繖涓鍑芥暟浼氳繑鍥炰竴涓鍙橀噺鐨勭被鍨嬩俊鎮銆備絾鏄錛屼嬌鐢╜type`鍑芥暟鏉ュ垽鏂鏁板肩被鍨嬩笉澶熺洿瑙傦紝鍥犱負闇瑕佹瘮杈冭繑鍥炵殑綾誨瀷鍚嶇О瀛楃︿覆銆傜ず渚嬩唬鐮佸備笅錛
python
num = 10
if type.__name__ in ['int', 'float', 'complex']: # 鍒ゆ柇綾誨瀷鍚嶇О鏄鍚︿負鏁板肩被鍨
else:
python
鍦ㄨ繖孌典唬鐮佷腑錛屾垜浠棣栧厛浣跨敤`type`鑾峰彇鍙橀噺`num`鐨勭被鍨嬩俊鎮錛岀劧鍚庨氳繃璁塊棶榪欎釜綾誨瀷鐨刞__name__`灞炴ф潵鑾峰彇綾誨瀷鐨勫悕縐板瓧絎︿覆銆傛渶鍚庯紝鎴戜滑媯鏌ヨ繖涓鍚嶇О鏄鍚︿負'int'銆'float'鎴'complex'錛屼互紜瀹氬彉閲忔槸鍚︿負鏁板肩被鍨嬨傚傛灉婊¤凍鏉′歡錛屽垯杈撳嚭“鍙橀噺鏄鏁板肩被鍨”錛屽惁鍒欒緭鍑“鍙橀噺涓嶆槸鏁板肩被鍨”銆傞渶瑕佹敞鎰忕殑鏄錛岃繖縐嶆柟娉曞逛簬澶勭悊鏇村嶆潅鐨勬暟鎹緇撴瀯鍙鑳戒笉澶熺伒媧誨拰鍋ュ.銆傚洜姝ゅ湪瀹為檯搴旂敤涓錛岄氬父鏇村懼悜浜庝嬌鐢╜isinstance`鍑芥暟鏉ュ垽鏂鍙橀噺鐨勭被鍨嬨
Ⅲ Python2和Python3中isinstance與type的區別
Python2與Python3中isinstance與type方法各有特點,用於判斷對象類型。
isinstance與type皆可用於判斷類型,isinstance的使用方式為isinstance(object,classinfo);type的使用方式為type(object)。
例如isinstance(1,int)的輸出為True。
而type(1)則返回結果為:int。
在Python2中,type方法不能用於檢查對象是否屬於某個類。
例如,a的type返回值是instance,而非A。
相比之下,Python3中type方法結果與預期一致。
值得注意的是,isinstance方法支持類繼承關系的判斷,而type方法不支持繼承,僅能判斷對象是否為當前類實例。