我不确定为什么口译员会抱怨这个输入的 Dict。对于这两个实例,我都收到“不允许使用可变默认值。使用默认工厂”语法错误。我正在使用 python 3.7.3
from dataclasses import dataclass
from typing import Dict
@dataclass
class Test:
foo: Dict[str, int] = {}
bar: Dict[str, float] = {'blah': 2.0}
Run Code Online (Sandbox Code Playgroud)
弄清楚了。这是导致问题的@dataclass 注释。有人能告诉我为什么吗?
小智 11
是的,这是dataclass为了避免您意外地为每个使用默认值实例化的 Test 对象提供相同的字典。
您可以调整上述内容以提供默认工厂(每次需要默认值时创建一个新字典的函数),其中包含以下内容:
from dataclasses import dataclass, field
from typing import Dict
@dataclass
class Test:
foo: Dict[str, int] = field(default_factory=dict)
bar: Dict[str, float] = field(default_factory=lambda: {'blah': 2.0})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1148 次 |
| 最近记录: |