【发布时间】:2017-07-04 08:47:33
【问题描述】:
我有一组函数定义了我想要的行为(接口)。
这个组可以封装在一个类中,所以我可以“强制”我想要的行为(引发未实现的错误)。
但另一方面,它不是很pythonic,而且这个类只是一个带有一堆静态方法的类。
因此,如果我使用带有功能的模块,我无法强制该模块实现所有所需的功能。
任何想法如何强制一个模块来实现我想要的所有功能,而不将它包装在一个类中?
提前致谢!
【问题讨论】:
-
为什么需要强制执行任何事情?您是否要求其他人实现 API?
-
想把它作为工厂的一部分,所以app的其他部分只能动态获取对象,不同的实现使用相同的函数名
-
那么为什么需要强制执行?
-
防止在使用未实现的函数时出现属性错误
-
您始终可以在导入时检查模块以了解是否定义了所需的功能集,但这并不能保证它们被“正确”定义 - 不会超过它所保证的实际上是一个类......另外,如果你有充分的理由,使用类作为命名空间也不一定是 unpythonic。