如何实现枚举嵌套类的函数?
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]
和print enumerate_nested_classes(A)
印刷品[<class '__main__.B'>, <class '__main__.C'>]
注意 dir(_class)
结果列表按字母顺序排序,因此使用assert enumerate_nested_classes(A) == [A.B, A.C]
时最好使用:assert sorted(enumerate_nested_classes(A)) == sorted([A.B, A.C])
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句