这是我的问题陈述:
我有一个提取器类,它调用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。
答案 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")