python-dataclasses - 在具有 default_factory 的字段中引用数据类的变量
问题描述
我想在 lambda 函数中为 default_factory 引用一个数据类变量,例如:
from typing import List
from dataclasses import dataclass, field
@dataclass
class A:
a: float = 1
b: List = field(default_factory = lambda: [a])
但我得到变量未定义的错误。我该如何解决这个问题?
解决方案
你有一个范围问题。到执行 lambda 函数时,a
它不再可见,因此它不知道如何解决它。另请参阅python 文档中有关延迟 lambda 执行的更简单的示例以了解该问题。
a
您可以通过在创建过程中绑定到 lambda 的本地范围来修复它:
@dataclass
class A:
a: float = 1
b: List = field(default_factory = (lambda a=a: [a]))
看起来有点奇怪,但它确实有效。
推荐阅读
- sql-server - 无法使用 SqlDataAdapter 和存储过程将数据插入表中
- android - 制作自定义xml形状android
- c++ - 使用 Vulkan 编译 C++ 时出现“未定义对 `vkCreateInstance@12' 的引用”错误
- ios - SwiftUI - 动态过滤时防止部分在列表中向右飞行/缩放
- swift - 使用多个集合视图时单元格不会加载
- flutter - 构建 Flutter APK 时发生的错误
- javascript - JSON.stringify() 返回 null
- grafana - Grafana 和 Loki 以及 ECS
- r - 简单斜率: seq.default(to = nrow(grid)) : 'to' 的长度必须为 1
- html - 标记在移动模式下不能用作链接