一般情况:
我甚至还没有得到具体的代码,或者我会发布它。不过,我想我有一些选择:
try
/except
运行模块中的所有内容if
/else
寻找我需要的方法this_is_class_sought=True
1-3看起来太粗糙了,4看起来太费劲了。你知道吗
我的情况:
我正在尝试将flasky与an application creator/factory集成。
我有一堆视图文件,我不知道这些文件中会有什么。我需要找到所有子类FlaskView的类,而不是FlaskView本身,然后运行类注册函数。你知道吗
因此,例如从dir(a_module)
对于随机遇到的模块:
['FlaskView', 'AView', '__builtins__', '__doc__', '__file__', '__name__', '__package__', 'forms', 'models', 'redirect', 'render_template', 'request', 'url_for']
我需要确定AView
是否存在,并运行注册方法。3,上面似乎有可能,但我还没有确定如何区分AView
。你知道吗
最好的方法是什么?你知道吗
编辑:
我必须强调的是,我不知道我将看到什么模块,或者它们将包含什么。我需要有效地提取我需要的信息,并根据这些信息采取行动。你知道吗
编辑2:
为了我的目的,子类简化了很多。你知道吗
听上去你想做些粗俗的事,但是。。。我无论如何都会帮忙的。如果选项4是一个选项,那么我建议改用自注册元类/基类。你知道吗
看看这个答案:Generic Python metaclass to keep track of subclasses
为完整性而复制
或者,只要用一些
issubclass
和isinstance
循环就可以了。一般来说,你不需要任何尝试/除了这里,但为了安全起见,你可以添加一些。你知道吗相关问题 更多 >
编程相关推荐