如何为类方法创建字典映射键并在同一时间初始化此对象

时间:2014-10-12 12:00:53

标签: python parsing dictionary

我正在创建一个解析器,我想要做的是一个方法,它初始化在字典中指定的类的对象,然后在该类上调用方法。对象应该在运行时创建,其他每次调用此方法时。这很复杂,我认为一些伪代码会更好地解释它:

# some_method places intialized object in some list    

dictionary_map = { 'foo': Bar.some_method, 'foo2': Bar2.some_method }

def parse_lines(lines):
    for line in lines:
        for key in dictionary_map: 
            if line.startswith(key):  # checking if line matches dict value
                dictionary_map[key](line)

我知道我可以通过这样的“自我”论证:

f = Bar()
dictionary_map['foo'](f)

但这不是我想要做的。字典很大,里面有很多类。我尝试过这样的事情:

dictionary_map = { 'foo': Bar.some_method(object.__new__(Bar)) }

但仅仅从看它我已经知道它不应该如何:)

1 个答案:

答案 0 :(得分:1)

一种方法(如果我理解正确的话)将分别使用包含类和方法的元组:

dictionary_map = {'foo': (Bar, 'some_method'), 'foo2': (Bar2, 'some_method')}

然后你可以创建一个新的类实例并像这样调用它的方法:

cls, method = dictionary_map[key]
getattr(cls(), method)()

这意味着如果需要,您可以对实例执行更多操作。