【问题标题】:Python typing, pickle and serialisationPython 类型、pickle 和序列化
【发布时间】:2018-05-14 10:42:45
【问题描述】:

我已经开始学习 python 中的打字系统,并在定义可挑选的函数参数时遇到了一个问题。不是python中的所有东西都可以腌制,我可以定义一个类型注释说“只接受可以腌制的对象”吗?

起初,这听起来应该是可能的,类似于 Java 的 Serializable,但后来在 python 中没有 Picklable 接口,并且在考虑这个问题时,我发现酸洗是一个固有的运行时任务. What can be pickled 列出了许多可以腌制的东西,不难想象一个不能腌制的 lambda 函数容器,但我想不出事先确定的方法(不触及容器定义)。

我想出的唯一方法是在What can be pickled 中列出的所有内容中定义类似typing.Union[Callable, Iterable, ...] 的内容,但这似乎不是一个好的解决方案。

【问题讨论】:

    标签: python-3.x serialization pickle typing


    【解决方案1】:

    github上的这个问题部分回答了这个问题,虽然这个问题具体与json而不是pickle有关,但Guido的第一个答案应该仍然适用于pickle

    我尝试这样做,但递归类型别名现在在 mypy 中不起作用,我不知道如何使它起作用。同时,我使用 JsonDict = Dict[str, Any] (这不是很有用,但至少澄清了键是字符串),而 Any 用于需要更通用的 JSON 类型的地方。

    https://github.com/python/typing/issues/182

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-16
      • 1970-01-01
      • 2013-01-16
      • 2011-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多