我有一个Parser类,它有解析文档的方法。解析器就像解析器函数的“容器”。现在,Parser还包含一个NDB map_async回调函数,用于将其他参数传递给回调函数。
Class P为每个映射的doc实体都有一个实例,它使用单个Parser实例来解析doc。
class P (object):
def __init__(self, parser, ...):
self.parser = parser
....
def get_content(...)
.... # using methods from P and self.parser
def other methods ...
.... # using methods from P and self.parser
class Parser(object):
def __init__(args)
....
def some parser methods()
....
def callback(entity): # Is now a method of Parser, but ....
p = P(self, ...)
....
content = p.get_content(...)
....
parser = Parser(...) # initialize Parser (instance, closure)
query = Docs.query()
multi_future = query.map_async(parser.callback)
.... # process results
这种方法很好,但感觉结构不合理。
我寻找P继承自Parser的解决方案: (回调可以/应该是P的一部分)
query = Docs.query()
multi_future = query.map_async(????? P ??????)
.... # process results
答案 0 :(得分:1)
我用lambda想出来了。
query = Docs.query()
multi_future = query.map_async(lambda entity: P(...).callback(entity))