如何创建一个可以在两个不同数据机类之间适应的适配器

问题描述 投票:0回答:1
         class DataMachineA:
def __init__(self):
    # some dummy data
    self.data = {"type": ["A", "A", "B", "B"],
                 "value": [1, 2, 3, 4],
                 "description": ["text1", "text2", "text2", "text3"],
                 "duration": [5, 6, 7, 8]}
    
def get_data(self, i):
    return self.data["duration"][i], self.data["type"][i], self.data["value"][i]

存储和处理对某些 B 类型机器的访问的类

DataMachineB 类: def init(自身): # 一些虚拟数据 self.data = {“类型”:[“D”,“C”,“D”,“C”], “测量”:[10,20,30,40], “时间”:[50,60,70,80]}

def fetch(self, i):
    return self.data["time"][i], self.data["measurement"][i], self.data["type"][i]

类适配器(DataMachineA,DataMachineB):

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

def retrieve(self, i):
    self.adaptee.fetch(i)
    self.adaptee.get_data(i)
    return self.adaptee["duration"][i], self.adaptee["type"][i], self.adaptee["value"][i]
python oop design-patterns adapter multiple-inheritance
1个回答
0
投票

由于

DataMachineA
DataMachineB
共享相同的
data
属性,但初始化方式不同,因此两个类的多重继承将导致一个
__init__
方法覆盖由另一个
data
方法初始化的
__init__
方法.

我建议

Adapter
类使用
DataMachineA
DataMachineB
实例的组合来代替:

class Adapter:
    def __init__(self):
        self.a = DataMachineA()
        self.b = DataMachineB()

    def retrieve(self, i):
        return (
            self.a["type"][i], self.a["duration"][i],
            self.b["type"][i], self.b["value"][i]
        )
© www.soinside.com 2019 - 2024. All rights reserved.