Python进阶之路 8.2.5 检测继承关系

8.2.5 检测继承关系在很多场景中,需要知道一个类A是否是从另外一个类B继承,这种校验主要是为了调用B类中的成员(方法和属性)。如果B是A的父类,那么创建A类的实例肯定会拥有B类所有的成员,关键是要判断B是否为A的父类。判断类与类之间的关系可以使用issubclass函数,该函数接收两个参数,第1个参数是子类、第2个参数是父类。如果第1个参数指定的类与第2个参数指定的类确实是继承关系,那么该...
摘要由CSDN通过智能技术生成

8.2.5 检测继承关系

在很多场景中,需要知道一个类A是否是从另外一个类B继承,这种校验主要是为了调用B类中的成员(方法和属性)。如果B是A的父类,那么创建A类的实例肯定会拥有B类所有的成员,关键是要判断B是否为A的父类。

判断类与类之间的关系可以使用issubclass函数,该函数接收两个参数,第1个参数是子类、第2个参数是父类。如果第1个参数指定的类与第2个参数指定的类确实是继承关系,那么该函数返回True,否则返回False。

# myclass2是myclass1的父类,返回True,否则返回False
issubclass(myclass1,myclass2)

如果想要获得已知类的父类(们),可以直接使用"__bases__",这是类的一个特殊属性,bases两侧是双下划线。

print(myclass.__bases__)

执行这行代码,如果myclass类的父类是parentclass,那么会输出如下内容。

(<class '__main__.myparentclass'>,)

除了可以使用前面介绍的方法检测类本身的继承关系外,还可以使用isinstance函数检测一个对象是否是某一个对象的实例。isinstance函数有两个参数,第1个参数是要检测的对象,第2个参数是一个类。如果第1个参数指定的对象是第2个参数指定的类的实例,那么该函数返回True,否则返回False。

person = persons()
# 如果person对象是persons类的实例,返回True,否则返回False
print(isinstance(person,persons))

[例 8.5] 本例创建了4个类,其中childclass、parentclass和myparentclass三个类有继承关系,也就是说,后一个类是前一个类的父类。另外一个myclass类是一个独立的类。接下来利用这4个类来演示issubclass__bases__isinstance的用法。

# 创建4个类
# 父类
class 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值