如何在Python 3的单个基类中使3个类一起工作?

因此,我正在构建一组简单的服务,并且厌倦了不得不手动实例化和硬编码很多我知道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等。我只是找不到具体的方法,或者至少找不到有意义的设计模式。

抱歉,这篇冗长的帖子。

zjbyyd1 回答:如何在Python 3的单个基类中使3个类一起工作?

还有另一种方法是将实例的方法传递到服务类中:

class Service:

    def __init__(self,action):
        self.action = action

    def doAction(self):  # action to be performed
        self.action()

class PowerService:

    def reboot(self):
        # Do some booty things

power = PowerService()

rebooter = Service(power.reboot)

rebooter.doAction()  # calls power.reboot()
本文链接:https://www.f2er.com/2490672.html

大家都在问