Python双继承

2024-06-16 10:45:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试为以下问题找到合适的继承配置:

我的基本方法是一个抽象类3:

class Agent():
__metaclass__ = abc.ABCMeta

    def __init__(self):

    @abc.abstractmethod
    def bidding_curve(self):

    @abc.abstractmethod
    def evaluate_bidding_curve(self):

    @abc.abstractmethod
    def action(self):

代理可以使用可执行文件(dymo)或FMU(C源代码的zip文件)进行模拟。因此,我创建了两种不同类型的代理,它们继承了基本代理,并实现了它们与模拟进行通信的方式。这是dymo仿真环境的实现,但FMU也是如此。在

^{pr2}$

DymoAgent和FMUAgent决定了我的Agent将如何与模拟环境交互。在

接下来,我需要代理的实现来确定代理将如何与应用程序交互。但是,我希望这种交互独立于仿真环境。E、 我想创建一个可以与加热器应用程序通信的代理,并实现这样做的逻辑。在

class Heater(WhatAgentShouldIUseHere):
    pass

我希望这个Heater类实现Agent基类的抽象方法和Dymo或FMUAgent的实现,这样它就知道如何与模拟交互。但是我不想编写两个Heater类,它们具有相同的逻辑(因此基本上是相同的代码)继承自不同的模拟代理。我在这张图中总结了这个问题:

enter image description here

有没有一种方法可以使用继承来防止这种情况发生?在

/阿诺


Tags: 方法self代理环境defheaterclassagent
1条回答
网友
1楼 · 发布于 2024-06-16 10:45:13

使Heater成为一个简单对象,在其构造函数中接受代理:

class Heater(object):
    def __init__(self, agent):
        self.agent = agent
    # define other methods for interaction with Heater application
    # in which you can access agent methods like self.agent.a_method(...)

相关问题 更多 >