Python提供了如下两个函数来检查类型:

isinstance(obj, class_or_tuple):检查 obj 是否为后一个类或元组包含的多个类中任意类的对象。

issubclass(cls, class_or_tuple):检查 cls 是否为后一个类或元组包含的多个类中任意类的子类。

isinstance

判断一个对象是否是另一个类的实例。

(传两个参数,一个是对象,一个是类)

如果是: True
如果不是: False
isinstance:
class Foo:
    pass

class Boo:
    pass

foo_obj = Foo()
boo_obj = Boo()

print(isinstance(foo_obj, Foo))  # True
print(isinstance(boo_obj, Foo))  # False

issubclass

判断一个类是否是另一个类的子类。

(传两个参数,一个是子类,一个是父类)

如果是: True
如果不是: False
# issubclass
class Father:
    pass

class Sub(Father):
    pass

class Foo:
    pass

print(issubclass(Sub, Father))  # True
print(issubclass(Foo, Father))  # False

Python 为所有类都提供了一个 __bases__属性,通过该属性可以查看该类的所有直接父类(基类),该属性返回所有直接父类组成的元组。例如如下代码:

class A:
    pass
class B:
    pass
class C(A, B):
    pass
print('类A的所有父类:', A.__bases__)
print('类B的所有父类:', B.__bases__)
print('类C的所有父类:', C.__bases__)

结果:

类A的所有父类: (<class 'object'>,)
类B的所有父类: (<class 'object'>,)
类C的所有父类: (<class '_main_.A'>, <class '__main__.B'>)

从上面的运行结果可以看出,如果在定义类时没有显式指定它的父类,则这些类默认的父类是 object 类。

subclasses

Python 还为所有类都提供了一个 **__subclasses__() 方法,通过该方法可以查看该类的所有直接子类,该方法返回该类的所有子类组成的列表**。例如在上面程序中增加如下两行:

print('类A的所有子类:', A.__subclasses__())

print('类B的所有子类:', B.__subclasses__())

运行上面代码,可以看到如下输出结果:

类A的所有子类: [<class '__main__.C'>]
类B的所有子类: [<class '__main__.C'>]

最新文章

  1. Codeforces554B:Ohana Cleans Up
  2. Kafka是如何实现高吞吐率的
  3. 正确理解ThreadLocal
  4. caffe学习系列(5):激活层介绍
  5. CQOI2009 BZOJ1303 中位数
  6. POSIX字符类型
  7. cocos2d-x3.0 Physics新的物理引擎
  8. 使用国内镜像更新sdk方法
  9. String的使用
  10. Node.js学习 - Modules
  11. SimpleDateFormat解析的时候字符串过长问题
  12. 图片转换base64数据上传,并且实现预览的简便方法
  13. Linux 常见命令示例【一】
  14. hadoop dfs.datanode.du.reserved 预留空间配置方法
  15. DUMP3 企业级电商项目
  16. IdentityServer4授权和认证对接数据库
  17. JS 书籍拓展内容
  18. 负载均衡服务器中存在大量的TIME_WAIT怎么解决
  19. bzoj 1706: [usaco2007 Nov]relays 奶牛接力跑——倍增floyd
  20. 笔记12 export to excel (NPOI)

热门文章

  1. Win10中SVN图标不显示的解决
  2. systemdump相关
  3. How does Chrome Extension crx Downloader work? ——— From crxdown.com
  4. (二十七)golang-排序和查找
  5. pixijs shader 扫光加强版
  6. python 多进程和多线程对比
  7. JAVAWeb入门之JSP基础知识
  8. 什么是JavaBean?
  9. LibLog 类库 分析
  10. EF CodeFirst 使用T4模板