我有一个模块导出的公共类,以及它的3个实现
在程序的某些点上,所使用的实现将动态地改变, 大致如下:
class PublicClass(object):
_IMPLEMENTATION_TO_USE = _Imp1
def func1(self, arg1):
_IMPLEMENTATION_TO_USE.func1(arg1)
class _Imp1(PublicClass):
def func1(self, arg1): pass
class _Imp2(PublicClass):
def func1(self, arg1): pass
最好的方法是什么
您可以考虑将Abstract Base Class与三个不同的子类一起使用,而不是组合。 在python中,duck typing优于显式检查类型
编程相关推荐