python - 如何枚举python中的嵌套类?

标签 python nested inner-classes

如何实现枚举嵌套类的函数?

class A(object):
    class B(object):
        pass

    class C(object):
        pass


def enumerate_nested_classes(_class):
    return ()  # need proper implementation instead


assert set(enumerate_nested_classes(A)) == {A.B, A.C}

最佳答案

inspect.getmembers()连同inspect.isclass()在这里应该有所帮助:

classes = [name for name, member_type in inspect.getmembers(A)
           if inspect.isclass(member_type) and not name.startswith("__")]

print(classes)  # prints ['B', 'C']

请注意,不是 name.startswith("__") 检查是排除 __class__ 所必需的 - 我怀疑有一种更简单和更 pythonic 的方法来这样做,如果有人能指出这一点,我们将不胜感激。

关于python - 如何枚举python中的嵌套类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34456049/

相关文章:

python - 两个 numpy 数组中所有行的组合

python - 动态组装 scrapy GET 请求字符串

python - 买入更高价格时保持最低平均利润

r - 在嵌套 ifelse 中正确使用 "IS NOT" "OR"和 "AND" boolean 值

javascript - 使用 JS 将嵌套对象的键展平为数组

java - 如何实现内部类?

scala - 当类型类中有类型类时,使用类型类语法的正确方法是什么?

python - 如何在 python 中将 EOF 写入 STDIN popen

javascript - Backbone 从嵌套 json 获取数据

C++ - 嵌套类有什么意义?