带你了解Python面向对象(4)高级篇:类型判断、反射

本文深入探讨Python的isinstance和issubclass类型判断,以及hasattr、getattr、setattr和delattr反射操作。通过实例解析如何利用反射动态操作对象和类,包括动态导入模块和调用方法。适合进阶学习者了解Python面向对象的高级用法。
摘要由CSDN通过智能技术生成


前言:

学习完面向对象进阶篇以后,已经掌握了大部分面向对象编程的使用,那么本章节主要学习的是更高级一点的使用,通过Python提供的内置方法,达到将字符串反射到对象的效果,可以间接操作对象和类且不需要修改源码

先来介绍两个常用的类型判断方法:isinstanceissubclass


isinstance

对象与类之间判断

用于判断对象所属类是否匹配,可以判断带有继承关系的类(推荐使用)

语法:

isinstance(obj,class) # 对象、类名

实例:

l = [1,2,3,4,5]
res = isinstance(l,list)

>>> print(res)
> True

另外一种平常我们所写判断类型的方法:

l = [1,2,3,4,5]

# 可以判断对象的类是否匹配,只能判断对象是否属于这个类,不能判断带继承关系的类
>>> print(type(l) is list)
> True

这两种区别在于,一个可以判断带有继承关系的类型,另一种则不行

class Animal:
    pass

class Dog(Animal):
    pass
    
dog = Dog()
   
>>> print(isinstance(dog,Animal))
> True

>>> print(type(dog) is Animal)
> False

issubclass

类与类之间判断

判断类是否为另一个类的子类或重孙类,注意:判断的是类

class Animal:
    pass

class Dog(Animal):
    pass

class People:
	pass

class Tdog(Dog):
    pass


>>> print(issubclass(Tdog,Animal))
> True

>>> print(issubclass(Tdog,People))
> 
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值