因此,我正在构建一组简单的服务,并且厌倦了不得不手动实例化和硬编码很多我知道Python可以动态完成的事情。具体来说,我想做的是设置一个简单的服务管理器,以便我可以控制电源的开/关/重置。现在,我已经知道如何使用Python来执行该实际功能,但是我想将其抽象出来,因此在较高的层次上,开发人员或用户可以执行以下操作:
Service.power.reboot
我基本上想拥有一个主类(服务),该类可以将特定的服务和操作(分别为电源和重启)作为参数。这将具有网络服务,存储服务等。到目前为止,我所做的是:
class Service:
def __init__(self,service,action):
self.service = service
self.action = action
def start(self): # action to be performed
pass
def stop(self):
pass
def restart(self):
pass
def enable(self):
pass
def disable(self):
pass
def status(self):
pass
我想做的事的伪代码版本,我认为这会更好,并进一步拆分代码:
Class Service:
def __init__(self,action):
self.service = service
self.action = action
def parse_request(self):
# figure out what the user wants to do to what,return the class and method
return serviceclass,serviceaction
def do_what_the_user_wants(self):
# call the class,run the method
return class.method
class PowerService:
def __init__(self,action):
self.action = action
def _parse_and_run_user_action_request:
# voodoo here to iterate over the available methods for self and run
return result
def run(self):
# run some power-related thing
return result
def stop(self):
# stop some power-related thing
return result
etc...
在这种情况下,用户就像Service('power','reboot')或更理想的是Service.power.reboot(),该服务模块接受参数(或Service后面的任何内容),如图找出要调用的实际服务以及运行的方法等等。
名为Power的服务是一个从该类继承的类,但是我想知道是否应该在 init 期间做一些事情来解析给定的参数,确定它要做什么,然后动态地进行调用类并执行给定的操作,而不必实际单独键入类。我想这样会更好(没有代码,只显示我的意思):
用户希望重新启动电源->服务类使用命令power类及其方法重新启动->服务类接受两个参数,对该类进行分类并动态运行该方法-> power类运行重新启动方法,返回状态- >服务类将结果返回给用户
让我感到困惑的主要部分是:如何使impl / API / factory或其他方法使用一堆复杂的模块,并使用API(各种)将字符串或什至是点号表示为参数,以便“ API”类或impl或其他任何东西都知道如何处理它们?
我只是没有找到任何可以正确解释它的东西。我知道python可以动态调用函数,方法,类及其关联的attrs,props等。我只是找不到具体的方法,或者至少找不到有意义的设计模式。
抱歉,这篇冗长的帖子。