目录
前言:
学习完面向对象进阶篇以后,已经掌握了大部分面向对象编程的使用,那么本章节主要学习的是更高级一点的使用,通过Python提供的内置方法,达到将字符串反射到对象的效果,可以间接操作对象和类且不需要修改源码。
先来介绍两个常用的类型判断方法:isinstance
、issubclass
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))
>