python - 有没有办法描述/类型提示函数参数的内容?
问题描述
我正在尝试学习如何更好地记录我的代码。描述一个函数并只是暗示它接收dict
似乎会让任何未来的读者都缺乏信息。
执行以下操作是否很常见?或者是否有另一种方式我错过了关于这个主题的阅读?
def add_control(self, ctrl_data: dict):
"""
:param ctrl_data:
- name: str
- channel: int
- control_channel_id: int
- default_position: int
:type ctrl_data: dict
"""
编辑:在盲目地称它为重复之前,请实际阅读一下这个问题。我的问题已经表明我知道什么是类型提示,我正在寻找关于在处理参数中的嵌套对象时类型提示如何工作的一个非常具体的部分的答案。
解决方案
- 如果你想使用 dict 你应该查看
TypedDict
. TypedDict:具有一组固定键的字典的类型提示。
from typing import TypedDict
class CtrlData(TypedDict):
name: str
channel: int
control_channel_id: int
default_position: int
def add_control(self, ctrl_data: CtrlData):
...
- 为了更好地记录代码,您应该添加一个返回类型。
def add_control(self, ctrl_data: CtrlData) -> TReturn:
...
- 您还可以更改函数签名并让调用者解压字典。我会说当你只有几个参数时会更清楚。
def add_control(
self,
name: str,
channel: int,
control_channel_id: int,
default_position: int
) -> TReturn:
...
推荐阅读
- json - 如何获取位于 ArrayType 列中的字段名称
- apache-storm - org.apache.storm.utils.NimbusLeaderNotFoundException:无法从种子主机中找到领导灵气
- ionic-framework - Ionic - 运行时错误 this.fba.logEvent(...).then 不是函数
- wordpress - 邮件黑猩猩每次都向订阅者发送所有提要
- istio - Istio Kafka Wire 协议支持
- tornadofx - TorndaoFx tableview 列可以使用日期选择器作为输入法吗?
- android - 在Android中打开飞机(飞机)模式时如何以编程方式打开wifi?
- javascript - Jquery - 联系人字段交互
- firebase - 检索 Firebase 分析事件的完整详细信息
- here-api - 是什么导致 heremaps RoutingAPI 调用中的系统错误?