一、功能
isinstance() 函數(shù)用于判斷對象是否是類或者類型元組中任意類元素的實例。
二、語法和示例
語法結(jié)構(gòu)如下:
isinstance(object, classinfo)
# ① object:實例對象
# ② classinfo:類名可以是直接或間接類名、基本類型或者由它們組成的元組
# ③ 返回值:如果對象的類型與classinfo類型相同則返回True;否則返回False
【示例1】使用isinstance()函數(shù)判斷一個實例對象是否屬于某個類。代碼如下:
# -*- coding: utf-8 -*-
# @Time : 2023-10-30 23:34
# @Author : AmoXiang
# @File : 01-IsinstanceTest.py
# @Software: PyCharm
# @Blog: https://blog.csdn.net/xw1680
class Animals(object):
a = ['dog', 'cat', 'pig', 'elephant', 'fox']
animal_instance = Animals()
print(isinstance(animal_instance, Animals)) # 判斷是否為Animals類的實例
print(isinstance(animal_instance, tuple)) # 判斷是否為元組
print(isinstance(animal_instance, (list, tuple, Animals))) # 判斷是否為列表,元組或者Animals類的實例
程序運(yùn)行結(jié)果如下圖所示:
【示例2】使用isinstance()函數(shù)判斷某個對象是否屬于原生類型,代碼如下:
# -*- coding: utf-8 -*-
# @Time : 2023-10-30 23:34
# @Author : AmoXiang
# @File : 01-IsinstanceTest.py
# @Software: PyCharm
# @Blog: https://blog.csdn.net/xw1680
numbers = [6, 7, 8, 9]
result = isinstance(numbers, list)
print(f'{numbers} isinstance of list? {result}')
result = isinstance(numbers, dict) # 判斷是否為字典
print(f'{numbers} isinstance of dict? {result}')
result = isinstance(numbers, (dict, list)) # 判斷是否為字典或列表
print(f'{numbers} isinstance of dict or list? {result}')
number = 5
result = isinstance(number, list)
print(f'{number} isinstance of list? {result}')
result = isinstance(number, int)
print(f'{number} isinstance of int? {result}')
程序運(yùn)行結(jié)果如下圖所示:
【示例3】判斷多個繼承中實例和父類的關(guān)系。代碼如下:
# -*- coding: utf-8 -*-
# @Time : 2023-10-30 23:34
# @Author : AmoXiang
# @File : 01-IsinstanceTest.py
# @Software: PyCharm
# @Blog: https://blog.csdn.net/xw1680
# 示例3:
class A:
pass
class B(A):
pass
class C(B):
pass
some_instance = C()
if isinstance(some_instance, A): # 判斷實例是否屬于A
print(f'{some_instance} 屬于A的實例')
else:
print(f'{some_instance} 不屬于A的實例')
程序運(yùn)行結(jié)果如下圖所示:
【示例4】將字典轉(zhuǎn)化為JSON格式。判斷數(shù)據(jù)是否為字典類型,如果實字典,則將字典轉(zhuǎn)換為JSON格式,否則提示格式錯誤。代碼如下:
# -*- coding: utf-8 -*-
# @Time : 2023-10-30 23:34
# @Author : AmoXiang
# @File : 01-IsinstanceTest.py
# @Software: PyCharm
# @Blog: https://blog.csdn.net/xw1680
import json
# 示例4:
def set_page_config(data):
if isinstance(data, dict):
data = json.dumps(data) # 將字典轉(zhuǎn)化為JSON格式數(shù)據(jù)
return data
else:
return '類型錯誤'
dict_data = {'app_id': '123456', 'app_name': 'Student'}
print(f'{dict_data} 數(shù)據(jù)類型是: {type(dict_data)}')
print(f'轉(zhuǎn)化后的JSON格式數(shù)據(jù)是: {set_page_config(dict_data)}')
print('*' * 70)
list_data = ['123456', 'Student']
print(f'{list_data} 數(shù)據(jù)類型是: {type(list_data)}')
print(set_page_config(list_data))
程序運(yùn)行結(jié)果如下圖所示:
三、補(bǔ)充:issubclass()函數(shù)—判斷是否是其他類的子類
issubclass() 函數(shù)用于判斷類是否是另外一個類或者類型元組中任意類元素的子類。
class:類名,用于指定子類
classinfo:類名,用于指定父類
返回值:如果 class 是 classinfo 的子類返回 True,否則返回 False文章來源:http://www.zghlxwxcb.cn/news/detail-835024.html
# -*- coding: utf-8 -*-
# @Time : 2023-10-31 0:14
# @Author : AmoXiang
# @File : 02-IssubclassTest.py
# @Software: PyCharm
# @Blog: https://blog.csdn.net/xw1680
# 示例1: 判斷類的繼承關(guān)系
class A:
pass
class B(A):
pass
if issubclass(B, A):
print('B是A的子類') # 輸出結(jié)果: B是A的子類
else:
print('B不是A的子類')
# 示例2:判斷多個繼承中父類和子類的關(guān)系
class C(B):
pass
if issubclass(C, A):
print('C是A的子類')
else:
print('C不是A的子類')
print(issubclass(C, A))
print(issubclass(B, (A, C))) # 判斷B是A或C的子類
程序運(yùn)行結(jié)果如下圖所示:文章來源地址http://www.zghlxwxcb.cn/news/detail-835024.html
到了這里,關(guān)于Python 常用內(nèi)置函數(shù)詳解(一):isinstance()函數(shù)----判斷對象是否是類或子類的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!