目录
- 一、功能
- 二、语法和示例
- 三、补充:issubclass()函数---判断是否是其他类的子类
一、功能
isinstance() 函数用于判断对象是否是类或者类型元组中任意类元素的实例。
二、语法和示例
语法结构如下:
isinstance(object, classinfo)
# ① object:实例对象
# ② classinfo:类名可以是直接或间接类名、基本类型或者由它们组成的元组
# ③ 返回值:如果对象的类型与classinfo类型相同则返回True;否则返回False
【示例1】使用isinstance()函数判断一个实例对象是否属于某个类。代码如下:
# -*- 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类的实例
程序运行结果如下图所示:
【示例2】使用isinstance()函数判断某个对象是否属于原生类型,代码如下:
# -*- 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}')
程序运行结果如下图所示:
【示例3】判断多个继承中实例和父类的关系。代码如下:
# -*- 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的实例')
程序运行结果如下图所示:
【示例4】将字典转化为JSON格式。判断数据是否为字典类型,如果实字典,则将字典转换为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) # 将字典转化为JSON格式数据
return data
else:
return '类型错误'
dict_data = {'app_id': '123456', 'app_name': 'Student'}
print(f'{dict_data} 数据类型是: {type(dict_data)}')
print(f'转化后的JSON格式数据是: {set_page_config(dict_data)}')
print('*' * 70)
list_data = ['123456', 'Student']
print(f'{list_data} 数据类型是: {type(list_data)}')
print(set_page_config(list_data))
程序运行结果如下图所示:
三、补充:issubclass()函数—判断是否是其他类的子类
issubclass() 函数用于判断类是否是另外一个类或者类型元组中任意类元素的子类。
class:类名,用于指定子类
classinfo:类名,用于指定父类
返回值:如果 class 是 classinfo 的子类返回 True,否则返回 False
# -*- coding: utf-8 -*-
# @Time : 2023-10-31 0:14
# @Author : AmoXiang
# @File : 02-IssubclassTest.py
# @Software: PyCharm
# @Blog: https://blog.csdn.net/xw1680
# 示例1: 判断类的继承关系
class A:
pass
class B(A):
pass
if issubclass(B, A):
print('B是A的子类') # 输出结果: B是A的子类
else:
print('B不是A的子类')
# 示例2:判断多个继承中父类和子类的关系
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的子类
程序运行结果如下图所示: