我已经开始在python中学习打字系统,并且在定义可选择的函数参数时遇到了一个问题。并不是python中的所有内容都可以被pickle,我可以定义一个类型注释,说“只接受可以选择的对象”吗?
起初它听起来应该是可能的,类似于Java Serializable
,但是在python中没有Picklable
接口,并且考虑到这个问题,我发现酸洗更多的是本质上的运行时任务。 What can be pickled列出了许多可以被腌制的东西,并且不难想象一个lambda函数的容器是不可拾取的,但是我想不出一种确定之前的方法(没有触及容器定义)。
我提出的唯一方法是定义类似于What can be pickled中列出的所有内容的typing.Union[Callable, Iterable, ...]
,但这似乎不是一个好的解决方案。
答案 0 :(得分:1)
github上的这个问题部分回答了这个问题,虽然问题与TEXT
而不是json
特别相关,但Guido的第一个答案仍应适用于pickle
我尝试这样做但是递归类型别名现在在mypy中不起作用,我不确定如何使其工作。与此同时,我使用JsonDict = Dict [str,Any](这不是很有用,但至少说明键是字符串),而Any适用于需要更通用的JSON类型的地方。