我有两种方法:
async def broadcast(self, message: WebSocketMessage):
for web_socket in self._websockets:
await web_socket.send(json.dumps(message.as_dict()))
async def broadcast_all(self, messages: List[WebSocketMessage]):
dumped_messages = json.dumps([msg.as_dict() for msg in messages])
for web_socket in self._websockets:
await web_socket.send(dumped_messages)
我希望只有一个方法可以作为参数WebSocketMessage
或List[WebSocketMessage]
。如果它不是List
而不是将其投放到列表中并执行与broadcast_all
相同的操作。
进行这种预处理的最佳方法是什么?
这就是我的所作所为:
async def broadcast_all(self, messages: object):
if not isinstance(messages, list):
messages = list(messages)
dumped_messages = json.dumps([msg.as_dict() for msg in messages])
for web_socket in self._websockets:
await web_socket.send(dumped_messages)
这样做的好方法吗?
答案 0 :(得分:0)
你很接近,但[消息]没有按照你的想法做到。该语句将返回一个列表,其中包含作为第一个元素存储在消息中的任何对象。
tup = (1,2,3)
new = [tup]
# the result of this will be [(1,2,3)]
相反,您应该使用内置列表()进行类型转换。
messages = list(messages)