gpt4 book ai didi

python - 返回字典

转载 作者:行者123 更新时间:2023-12-01 05:06:26 25 4
gpt4 key购买 nike

我在返回在 report 函数中构建的字典时遇到了一些问题。我知道我实际上是在调用 decode 函数。我只是不知道如何解决这个问题。一切正常。代码做了它应该做的事情。但后来,我添加了这本我想返回的字典,以便我可以在 script_A.py

中使用它

调用代码(sript_A.py):

self.decoder = Decoder(Frame)
recvDict = self.decoder.decode(self.message)
print type(recvDict) # this returns <type 'NoneType'>

调用的代码(script_B.py):

class Decoder(object):
def decode(self, message):
processIncomingPacket(message, self.report)

def report(self, message):
my_dict = {'a': '123', 'b': '456'}
return my_dict

定义了 processIncomingPacket 的其他一些脚本:

class Some_class(object):
processIncomingPacket(self, data, callback):
raise NotImplementedException("not implemented")

更新:

processIncomingPacket的实现:

def processIncomingPacket(self, data, callback):
_logger.debug(" ".join([hex(ord(x)) for x in data]))
self.addToFrame(data)
while self.isFrameReady():
if self.checkFrame():
result = self.decoder.decode(self.getFrame())
if result is None:
raise PacketIOException("Unable to decode request")
self.populateResult(result)
self.advanceFrame()
callback(result) # defer or push to a thread?
else: break

最佳答案

问题是 processIncomingPacket 不会返回您传递给它的回调结果(self.result,在您的情况下):

self.populateResult(result)
self.advanceFrame()
callback(result) # Doesn't capture the return value

最简单的修复方法是调整回调的工作方式,以便它不需要返回任何内容。相反,让它采用现有的 dict 对象,然后用您想要的内容更新它:

from functools import partial

class Decoder(object):
def decode(self, message, recvDict):
callback = partial(self.report, recvDict)
processIncomingPacket(message, callback)

def report(self, recvDict, message):
my_dict = {'a': '123', 'b': '456'}
recvDict.update(my_dict)

self.decoder = Decoder(Frame)
recvDict = {}
self.decoder.decode(self.message, recvDict)
# recvDict now matches my_dict

关于python - 返回字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24916164/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com