gpt4 book ai didi

python - 获取给定 Python 类实现的所有抽象基类的列表

转载 作者:行者123 更新时间:2023-12-05 03:51:10 26 4
gpt4 key购买 nike

给定一个类(在 Python 3.8 中),我如何获得它实现的所有抽象基类的列表?例如,给定 list,我正在寻找可以返回 ContainerIterableCollection大小序列

inspect.getmro()__mro____bases__ 将提供父类,但它们不包括抽象基类。因此,对于 list,他们只提供 object(以及 list 本身用于 mro)。

isinstance 将判断一个对象是否实现了一个特定的抽象基类,而不是它实现的所有抽象基类的列表。

最佳答案

您可以使用collections.abc。根据 python 文档

This module provides abstract base classes that can be used to test whether a class provides a particular interface; for example, whether it is hashable or whether it is a mapping.

链接 - 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)]

关于python - 获取给定 Python 类实现的所有抽象基类的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63108174/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com