我有一个函数返回一个始终具有相同键的字典(通过网络发送并使用 json 进行“字符串化”)。基本上我的函数看起来像这样:
def getTemps(self) -> dict:
"""
get room and cpu temperature in °C as well as humidity in %
"""
# send temperature request to server
msg = {'type':'req', 'reqType':'temps'}
self.send(msg)
res = self.recieve() # get response
return res
并且从这个函数获得的字典总是看起来像这样:
{'Room':float, 'CPU':float, 'hum':float}
所以我想知道是否有一种方法来指定函数的返回类型,以便你知道什么键字典有:
def getTemps(self) -> Dict['Room':float, 'CPU':float, 'hum':float]
但这不起作用,因为它仅在将鼠标悬停在函数上时显示
Dict[slice, slice, slice]
(我正在使用 vscode)。
我不认为这是非常有用的东西,但有些东西这会让你的代码看起来更好,也更容易被其他人使用。因此,如果有人知道这是否可能以及如何实现,我将非常感激得到答复!
从 Python 3.8 开始,可以使用
TypedDict
来定义具有固定键和类型值的字典。
以下是如何将
TypedDict
用于的代码:
from typing import TypedDict
class Temps(TypedDict):
Room: float
CPU: float
hum: float
def getTemps(self) -> Temps:
"""
get room and cpu temperature in °C as well as humidity in %
"""
# send temperature request to server
msg = {'type':'req', 'reqType':'temps'}
self.send(msg)
res = self.recieve() # get response
return res
这将允许类型检查器和 IDE 了解
getTemps
返回的字典始终具有
Room
、
CPU
和
hum
键,并且这些键的值分别为
float
类型。
现在,当将鼠标悬停在
getTemps
函数上时,它将正确显示
Temps
类型,该类型包含有关字典键及其预期类型的详细信息。