上一堂课

时间:2019-06-07 20:28:36

标签: python python-3.x

这是我的问题陈述:

我有一个提取器类,它调用ConfigManager类并传递类型作为参数。根据类型,ConfigManager解析需要调用的类。

这时,ConfigManager具有对该类的引用。

但是,ConfigManager需要将该类传递回提取器。

ConfigManager是一个帮助程序类,提取程序将调用它来获取类型特定的类。

如何使ConfigManager将类传递给Extractor?

我是python的新手,非常感谢您的帮助。

Extractor -> ConfigManager -> AbstractLoader| -> Metric1Loader

Extractor class calls ConfigManager. ConfigManager gets Metric1Loader class and needs to pass it to Extractor.

ConfigManager应该将Metric1Loader的类引用传递回Extractor。

2 个答案:

答案 0 :(得分:2)

对我来说,您的要求听起来像一个问题,可以通过factory设计模式来解决。

这是一个可以用作参考的示例。

class AbstractLoader:
    def __init__(self):
        pass


class Metric1Loader(AbstractLoader):
    def __init__(self):
        print('Metric1Loader')


class Metric2Loader(AbstractLoader):
    def __init__(self):
        print('Metric2Loader')


class Factory:
    @staticmethod
    def make_class(target_class):
        # This will instantiate object of type determined from target_class string
        return globals()[target_class]()


def extractor():

    types = ['Metric1Loader', 'Metric2Loader']

    for type in types:
        obj = Factory.make_class(type)


if __name__ == '__main__':
    extractor()

# STDOUT:
# Metric1Loader
# Metric2Loader

答案 1 :(得分:1)

也许创建了一种将数据返回到需要它的对象的方法?

def ConfigManager:
    def resolveClass(self, name):
        return obj

def Extractor:
    def doSomething(self):
        configManager = ConfigManager()
        resolvedClass = configManager.resolveClass("name")
相关问题