我正在尝试将C#方法复制到python,卡在查询附近
var handler = from handler in _message
private JObject ProcessMessage(JObject json)
{
var type = GetProperty(json, TypeField).ToString();
message = GetProperty(json, MsgField).ToString();
var handlers = from handler in _message
where handler.Type == type && handler.Name == msg
select handler;
var selected = handlers.FirstOrDefault();
return selected.Process(json);
}
这是我尝试过的python代码,
def process_message(self):
type=get_property(self,translator.TypeField)
message=get_property(self,translator.MsgField)
def get_property(self, TypeField):
type_token = self.get(TypeField)
return type_token
答案 0 :(得分:0)
您的python代码有些错误。
首先,我假设您想将JSON对象作为参数传递给process_message。我还假设您的代码在类中。在这种情况下,您不仅要写process_message(self, json)
,而且要写process_message(self)
。
第二,get_property
是多余的。例如,您可以将其替换为type = json.get(translator.TypeField)
。
对于查询,您可以使用列表理解:
handlers = [h for h in _message if h.type == type and h.name == message]
最后,我们得到这样的东西:
def process_message(self, json):
type = json.get(translator.type_field)
message = json.get(translator.msg_field)
selected = [h for h in _message if h.type == type and h.name == message]
if len(selected) > 0:
return selected[0].process(json)
我用小写字母替换了您的命名,因为在python中,习惯上这样标记字段名称。