检查对象类型并转换为lis

2024-10-03 02:35:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两种方法:

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)

我只想有一个方法可以作为参数WebSocketMessageList[WebSocketMessage]。如果它不是List,则将其强制转换为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)

这样做好吗?你知道吗


Tags: 方法inselfwebforasyncwebsocketsdef
1条回答
网友
1楼 · 发布于 2024-10-03 02:35:00

你很接近,但[信息]并不像你想象的那样。该语句将返回一个列表,其中包含作为第一个元素存储在消息中的任何对象。你知道吗

tup = (1,2,3)
new = [tup]
# the result of this will be [(1,2,3)]

相反,您应该只使用内置list()进行类型转换。你知道吗

messages = list(messages)

相关问题 更多 >