首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >TypedDict不能声明名为"not“的属性

TypedDict不能声明名为"not“的属性
EN

Stack Overflow用户
提问于 2020-05-22 17:12:24
回答 1查看 432关注 0票数 2

我试图为JSON模式规范声明一个类型,这样我就可以通过使用jsonschema包传递模式来验证类型。这是一个小问题,所以我使用Python3.8TypedDict。以下是我到目前为止所拥有的:

代码语言:javascript
运行
复制
from typing import List, Dict, Any, TypedDict, Optional

class JSONSchema(TypedDict):
    """A type for the JSONSchema spec"""
    type: str
    title: Optional[str]
    description: Optional[str]
    properties: Optional[Dict[str, JSONSchema]]
    required: Optional[List[str]]
    additionalProperties: Optional[bool]
    definitions: Optional[Dict[str, JSONSchema]]
    minLength: Optional[int]
    maxLength: Optional[int]
    allOf: Optional[List[JSONSchema]]
    anyOf: Optional[List[JSONSchema]]
    oneOf: Optional[List[JSONSchema]]
    not: Optional[JSONSchema]

但是,我得到以下语法错误:

代码语言:javascript
运行
复制
  File "autocoder_ocr/schemas.py", line 39
    not: Optional[JSONSchema]
       ^
SyntaxError: invalid syntax

这是因为not是语言关键字。但是,"not"是一个有效的dict键。那么我如何在类型定义中声明它呢?

我正在使用Python 3.8.2

EN

回答 1

Stack Overflow用户

发布于 2020-05-22 18:07:29

嘿,你可以用这种风格,它会让你用不了钥匙。

代码语言:javascript
运行
复制
from typing import List, Dict, Any, TypedDict, Optional
JSONSchema = TypedDict(
    "JSONSchema",
    {
        "type": str,
        "title": Optional[str],
        "description": Optional[str],
        "properties": Optional[Dict[str, JSONSchema]],
        "required": Optional[List[str]],
        "additionalProperties": Optional[bool],
        "definitions": Optional[Dict[str, JSONSchema]],
        "minLength": Optional[int],
        "maxLength": Optional[int],
        "allOf": Optional[List[JSONSchema]],
        "anyOf": Optional[List[JSONSchema]],
        "oneOf": Optional[List[JSONSchema]],
        "not": Optional[JSONSchema],
    },
)

代码中的第二个错误是,JSONSchema不是在类主体中定义的,也不是以这种方式在赋值的右侧定义的。最终,您可能能够编写类似于Optional["JSONSchema"]的东西,但这还没有实现。

当前不支持递归或循环类型定义。下面是github问题:https://github.com/python/mypy/issues/731,您可能会在那里的某个地方找到一份工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61960384

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档