Python 常用内置函数详解(一):isinstance()函数—-判断对象是否是类或子类

目录

  • 一、功能
  • 二、语法和示例
  • 三、补充: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的子类

程序运行结果如下图所示:

版权声明:本文为博主作者:Amo Xiang原创文章,版权归属原作者,如果侵权,请联系我们删除!

原文链接:https://blog.csdn.net/xw1680/article/details/134130703

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
乘风的头像乘风管理团队
上一篇 2024年2月19日
下一篇 2024年2月19日

相关推荐