首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >未在数据类的字段上调用default_factory

未在数据类的字段上调用default_factory
EN

Stack Overflow用户
提问于 2020-03-05 00:52:13
回答 1查看 946关注 0票数 0

下面是一个发生情况的示例:

代码语言:javascript
运行
复制
 @dataclass 
 class D: 
     prop1: str 
     prop2: dict = field(default_factory=lambda: defaultdict(set)) 

 d = D("spam")
 print(d)
 # D(prop1='spam', prop2=Field(name=None,type=None,default=<dataclasses._MISSING_TYPE object at 0x10274c650>,default_factory=<function D.<lambda> at 0x103ad3a70>,init=True,repr=True,hash=None,compare=True,metadata=mappingproxy({}),_field_type=None))

正如您所看到的,prop2不是使用default_factory的默认值进行初始化的,它仍然是一个字段。如果我尝试做d.prop2["some key"],我会得到TypeError: 'Field' object is not subscriptable

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-05 00:52:13

您可能从错误的模块导入了dataclass装饰器。如果您在IDE中使用自动导入,则可能会发生这种情况。

当您从attr (from attr import dataclass)导入dataclass时,就会发生上述行为。如果使用from dataclasses import dataclass,一切都将按预期工作(将调用default_factory以生成字段的值)。

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

https://stackoverflow.com/questions/60531038

复制
相关文章

相似问题

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