我正在导入所有需要提供相同功能的可变数量的模块(func1
,func2
,func3(n)
)。
我知道所有的模块名称并且需要验证它们全部 - 至少提供函数,而不执行它们(例如不类似try something = mod1.func1 except NotWorking: print("nope")
)或解析整个模块存在" def func1:
"。
我如何验证这些模块是否提供所述功能?
答案 0 :(得分:1)
模块是对象,方法只是这些对象的属性。您可以使用普通的getattr
和hasattr
函数:
hasattr(mod1, "func1")
但这听起来像是一种奇怪的做事方式。使用具有适当继承机制的类可能会更好,这样超类通过声明抽象方法(除了引发NotImplementedError
之外什么都不做)来定义接口,并且子类实现该接口。