加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

如何在python中枚举嵌套类?

发布时间:2020-12-20 11:47:53 所属栏目:Python 来源:网络整理
导读:如何实现枚举嵌套类的函数? class A(object): class B(object): pass class C(object): passdef enumerate_nested_classes(_class): return () # need proper implementation insteadassert set(enumerate_nested_classes(A)) == {A.B,A.C} 解决方法 您可以
如何实现枚举嵌套类的函数?

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}

解决方法

您可以使用下一个代码:

import types


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

    class C(object):
        pass

def enumerate_nested_classes(_class):
    return [getattr(_class,n) for n in dir(_class) if not n.startswith('__')
            and isinstance(getattr(_class,n),(type,types.ClassType))] 

assert enumerate_nested_classes(A) == [A.B,A.C]

并打印enumerate_nested_classes(A)打印[< class'__main __.B'>,< class'__main __.C'>]

NB. dir(_class)结果列表按字母顺序排序,因此当使用assert enumerate_nested_classes(A)== [A.B,A.C]时,最好使用:assert sorted(enumerate_nested_classes(A))== sorted([A.B,A.C]).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读