当属性名称与类名称相同时,错误的类型提示

时间:2019-09-16 07:08:38

标签: python python-3.x typehints

from typing import get_type_hints, Optional
from dataclasses import dataclass

@dataclass
class Wife:
    name: str = ''


@dataclass
class Husband:
    name: str = ''
    wife: Optional[Wife] = None


@dataclass
class HusbandNew:
    name: str = ''
    Wife: Optional[Wife] = None


get_type_hints(Husband)
>>> {'name': str, 'wife': typing.Union[__main__.Wife, NoneType]}
get_type_hints(HusbandNew)
>>> {'name': str, 'Wife': NoneType}

我正在使用Python 3.7.4HusbandNewHusband之间的唯一区别是wife / Wife属性(Wife也是类名)。为什么它们会产生不同的类型提示?

在python中,我们通常使用PascalCase作为类名,使用snake_case作为属性名。但是,我经常处理返回JSON的外部API。我将该JSON复制到https://app.quicktype.io/,以生成带有类型注释的dataclasses。它产生与属性名称相同的类名称。

0 个答案:

没有答案