我们有一个函数,它接受各种不同类型的输入:一个函数、一个字符串、一个编译的正则表达式、一个Hamcrest 匹配器,并根据输入的类型适当地过滤一个列表。
我们目前正在使用isinstance(our_filter, hamcrest.matcher.Matcher)
,但这需要我们安装 Hamcrest。
我们正在考虑在inspect.getmro(type(POSSIBLE_MATCHER))
;上使用字符串匹配。但这感觉不干净。在 import 语句周围可能还有带有try
/的选项。except
最好的方法是什么?
在@dblslash 的帮助下,这是迄今为止我得到的最好的:
[x.__module__+"."+x.__name__ for x in inspect.getmro(type(POSSIBLE_MATCHER))]
['hamcrest.core.core.isequal.IsEqual', 'hamcrest.core.base_matcher.BaseMatcher', 'hamcrest.core.matcher.Matcher', 'hamcrest.core.selfdescribing.SelfDescribing', '__builtin__.object']