一、功能

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的子类

程序运行结果如下图所示:
在这里插入图片描述

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐