Python父类(super class)反射

标签 python reflection

如果我有 Python 代码

class A():
    pass
class B():
    pass
class C(A, B):
    pass

我有类 C,有没有办法遍历它的父类(super class)(AB)?类似伪代码的东西:

>>> magicGetSuperClasses(C)
(<type 'A'>, <type 'B'>)

一个解决方案似乎是inspect modulegetclasstree 函数。

def magicGetSuperClasses(cls):
    return [o[0] for o in inspect.getclasstree([cls]) if type(o[0]) == type]

但这是实现目标的“Pythonian”方式吗?

最佳答案

C.__bases__ 是一个父类(super class)数组,因此您可以像这样实现您的假设函数:

def magicGetSuperClasses(cls):
  return cls.__bases__

但我想在大多数情况下直接引用 cls.__bases__ 会更容易。

关于Python父类(super class)反射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25807/

相关文章:

JavaScript 反射 : get variables

scala - 通过反射实例化 Scala 类/案例类

python - 带有 char_wb 的 tf-idf 会忽略自定义预处理器吗?

python - 将模板字符串传递给 Jinja 宏

python - 类型错误 : not enough arguments for format string - using a While Loop

c# - 将泛型类型的实例返回到在运行时解析的函数

c# - 您如何使用反射获取类及其基类(在层次结构中向上)的所有属性? (C#)

Scala 反射 - 基于特征加载或查找类

python - python 查找字符串中的连续字母

python - 有条件地设置 Pandas 中组的值python