检查模块是否提供所需功能而不执行它们

时间:2014-10-21 09:01:25

标签: python function module

我正在导入所有需要提供相同功能的可变数量的模块(func1func2func3(n))。

我知道所有的模块名称并且需要验证它们全部 - 至少提供函数,而不执行它们(例如类似try something = mod1.func1 except NotWorking: print("nope"))或解析整个模块存在" def func1:"。

我如何验证这些模块是否提供所述功能?

1 个答案:

答案 0 :(得分:1)

模块是对象,方法只是这些对象的属性。您可以使用普通的getattrhasattr函数:

hasattr(mod1, "func1")

但这听起来像是一种奇怪的做事方式。使用具有适当继承机制的类可能会更好,这样超类通过声明抽象方法(除了引发NotImplementedError之外什么都不做)来定义接口,并且子类实现该接口。