【发布时间】:2019-05-01 14:30:09
【问题描述】:
python 标准 dataclasses 模块的 Field 类的文档仅指定:
其记录的属性是:
- [...]
- type:字段的类型。
对我来说,这似乎意味着该字段将包含类型本身,而不仅仅是字符串形式的名称。
但是,它似乎只是按原样复制类型注释,使其毫无用处。
例子:
@dataclasses.dataclass
class C:
c: 'C'
dataclasses.fields(C)[0].type # This returns the string 'C'
typing.get_type_hints(C)['c'] # This returns the class C, as expected
在使用PEP563 类型注解时甚至会系统地出现该问题。
这是数据类模块中的错误吗?这是预期的行为吗?如果是这样,我如何检索给定 Field 实例的类型对象?
【问题讨论】:
-
到底是什么问题?您期望
dataclass模块如何处理该类型?它处理类型提示的方式与处理其他所有类型提示的方式完全相同。 -
好吧,我希望它能够按照文档中的说明进行操作,即返回类型本身,而不是类型注释。