为什么在使用键入属性名称与类名称匹配时引发TypeError?

时间:2019-07-17 08:36:53

标签: python typing

我无法初始化数据类列表属性,该属性的名称与列表元素的类相同。

更改属性名称时,初始化工作正常。我在使用Pydantic类时遇到了同样的问题。

from dataclasses import dataclass, field
from typing import List

@dataclass
class Thing:
    name: str

@dataclass
class MyClass:
    Thing: List[Thing] = field(default_factory=list)

c = MyClass()

这会出现以下错误:

TypeError: Parameters to generic types must be types. Got Field(name=None,type=None,default=<dataclasses._MISSING_TYPE object at 0x00000201CA208518>,default_f.

当我改变时:

    Thing: List[Thing] = field(default_factory=list)

收件人:

    thing: List[Thing] = field(default_factory=list)

不会引发TypeError。

1 个答案:

答案 0 :(得分:0)

因为那样就覆盖了Thing

这就是thing起作用的原因。