检查对象类型并转换为列表

时间:2017-10-02 12:59:19

标签: python python-3.x

我有两种方法:

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而不是将其投放到列表中并执行与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)

这样做的好方法吗?

1 个答案:

答案 0 :(得分:0)

你很接近,但[消息]没有按照你的想法做到。该语句将返回一个列表,其中包含作为第一个元素存储在消息中的任何对象。

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

相反,您应该使用内置列表()进行类型转换。

messages = list(messages)