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.4
。 HusbandNew
和Husband
之间的唯一区别是wife
/ Wife
属性(Wife
也是类名)。为什么它们会产生不同的类型提示?
在python中,我们通常使用PascalCase作为类名,使用snake_case作为属性名。但是,我经常处理返回JSON的外部API。我将该JSON复制到https://app.quicktype.io/,以生成带有类型注释的dataclasses
。它产生与属性名称相同的类名称。