如何在Python的Callable参数类型列表中使用自定义类
正确使用TypedDict作为Callable参数类型的方法
你的问题出在Callable泛型的参数格式错误:Callable的第一个类型参数必须是参数类型的元组/列表(哪怕只有一个参数),而不是直接传入单个类型。
正确代码示例
from typing import Any, Callable, TypedDict class PassedData(TypedDict): node: str class Action(TypedDict): # 用方括号包裹单个参数类型,形成参数列表的类型声明 action: Callable[[PassedData], Any] data: Any
错误原因说明
- 最初的写法
Callable[PassedData, Any]不符合Callable的泛型规范:Callable要求第一个参数是所有输入参数的类型组成的序列,单个参数也要用[[]]包裹。 - 用
Type(PassedData)完全没必要,Type[PassedData]表示的是PassedData类本身的类型(比如用来接收类对象),而你需要的是PassedData的实例作为函数参数,直接用PassedData即可。
内容的提问来源于stack exchange,提问作者ANimator120
相关产品推荐
相关产品推荐

