python - 获取给定 Python 类实现的所有抽象基类的列表
问题描述
给定一个类(在 Python 3.8 中),我如何获得它实现的所有抽象基类的列表?例如, given list
,我正在寻找可以返回Container
, Iterable
, Collection
, Sized
,Sequence
等的东西。
inspect.getmro()
, __mro__
, 和__bases__
将提供父类,但它们不包括抽象基类。因此,因为list
他们只提供object
(以及list
本身为 mro 提供)。
isinstance
将判断一个对象是否实现了一个特定的抽象基类,而不是它实现的所有抽象基类的列表。
解决方案
您可以使用collections.abc
. 根据python文档
该模块提供了抽象基类,可以用来测试一个类是否提供了特定的接口;例如,它是可散列的还是映射的。
链接 - https://docs.python.org/3/library/collections.abc.html
In [22]: import collections.abc
In [23]: import inspect
In [31]: [(k,v) for k, v in vars(collections.abc).items() if inspect.isclass(v) and issubclass(list, v) ]
Out[31]:
[('Iterable', collections.abc.Iterable),
('Reversible', collections.abc.Reversible),
('Sized', collections.abc.Sized),
('Container', collections.abc.Container),
('Collection', collections.abc.Collection),
('Sequence', collections.abc.Sequence),
('MutableSequence', collections.abc.MutableSequence)]
推荐阅读
- mysql - 分组和排序计数 desc 花费时间
- windows-10-universal - 错误:我的新类的当前上下文中不存在名称“FindName”
- excel - 在 Excel 中如何处理某些数组和数组函数;特别是数组处理对调用函数的依赖性
- c - 函数调用后输出不同的值?
- mount - 如何在 Linux 中创建和挂载文件作为 HFS+ 文件系统进行读写?
- php - Spotify Web API 授权未给出正确响应
- python - 如何按照列表的顺序重命名文件夹中的多个文件
- reactjs - axios.delete() 未运行然后阻塞
- python - 是否有用于非线性回归的 scikit-learn/keras 函数?
- hortonworks-data-platform - Ranger Kylin 插件集成中未找到用户错误