所以我有很多函数,每个函数都对服务进行 api 调用,进行一些处理并返回一些东西。但是,其中有几个服务是相似的,我基本上需要为每个服务创建具有所有相同功能的类,但根据环境变量的值,在运行时只会使用这些类中的一个。
在 python 中执行此操作的最佳方法是什么?
我可以使用 ABC 创建一个抽象基类,确保所有这些类都实现相同的功能。
AbstractThing(ABC):
@abstractmethod
def action1(self):
pass
@abstractmethod
def action2(self):
pass
Thing1(AbstractThing):
def action1(self):
# do something
return something
def action2(self):
# do something
return something
Thing2(AbstractThing):
def action1(self):
# do something
return something
def action2(self):
# do something
return something
但是,我正在努力解决的是如何在其余的 python 代码中获得该类。
我是否应该创建另一个具有所有这些相同功能的类,但获得这些子类中的正确一个并将所有函数调用推迟到该类?
Client(AbstractThing):
def __init__(self):
thing_name = os.environ('THING')
self.thing = getattr(sys.modules[__name__], thing_name)
def action1(self):
return self.thing()
def action2(self):
return self.thing()
或者,还有更好的方法?