Lea*_*oN. 5 python metaclass inner-classes python-2.7 python-3.x
我正在编写一个小型 Python 应用程序,其中包含一些嵌套类,如下例所示:
class SuperBar(object):
pass
class Foo(object):
NAME = 'this is foo'
class Bar(SuperBar):
MSG = 'this is how Bar handle stuff'
class AnotherBar(SuperBar):
MSG = 'this is how Another Bar handle stuff'
Run Code Online (Sandbox Code Playgroud)
我使用嵌套类来创建某种层次结构,并提供一种干净的方法来实现解析器的功能。
在某些时候,我想创建一个内部类的列表。我想要以下输出:
[<class '__main__.Bar'>, <class '__main__.AnotherBar'>]
Run Code Online (Sandbox Code Playgroud)
问题是:以 pythonic 方式获取内部类列表的推荐方法是什么?
我设法使用以下方法获取内部类对象的列表:
import inspect
def inner_classes_list(cls):
return [cls_attribute for cls_attribute in cls.__dict__.values()
if inspect.isclass(cls_attribute)
and issubclass(cls_attribute, SuperBar)]
Run Code Online (Sandbox Code Playgroud)
它有效,但我不确定__dict__直接使用是否是一件好事。我使用它是因为它包含我需要的实际class实例,并且似乎可以跨 Python 2 和 3 移植。
| 归档时间: |
|
| 查看次数: |
6004 次 |
| 最近记录: |