将输出保存在数据结构中以进行事后检查。这些方法返回字符串(解析或选择HTML,它们不修改对象)。
我通过创建一个目前尚不太积极的类找到了一个“硬编码”解决方案:call list of function using list comprehension。
[也许另一个用于检查库的库将是一个极端。我试图在Python源代码中打印一些内容,但是它没有服从我。似乎另一个实例正在运行]
我已经尝试过这种语法(不可能):
result = [obj.f() for f in [append, attrs]]
因为append
和attrs
在默认情况下不是静态函数,而是如上所示的“点分”。
目标只是对所有obj方法的简单检查。
[强烈建议编辑]
更新
在[122]中:getattr? Docstring:getattr(对象,名称[,默认])-> 值
从对象获取命名属性; getattr(x,'y')等效于 x.y.给出默认参数后,当 属性不存在;没有它,就会引发一个例外 案件。类型:builtin_function_or_method getattr():属性名称必须为字符串 仅
2
有效。这是获得的“结果”(而不是对其进行硬编码) 有关“模型”作为对象的更多信息。
答案 0 :(得分:1)
您需要绑定的方法:
result = [f() for f in [obj.append, obj.attrs]]
或通过getattr
进行动态属性查找:
result = [getattr(obj, m)() for m in ["append", "attrs"]]
如果您打算对许多对象执行此操作,则可能要使用operator.methodcaller
:
methods = [methodcaller(m) for m in ["append", "attrs"]]
results_for_obj_a = [f(obj_a) for f in methods]
results_for_obj_b = [f(obj_b) for f in methods]
# etc.
methodcaller
是一种抽象方法,可以从任何特定对象中调用方法。
methodcaller(method_name)(obj) == getattr(obj, method_name)()