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