【发布时间】:2022-01-06 08:17:37
【问题描述】:
我有一个数据类如下:
from dataclasses import dataclass, field
from typing import Any, Dict
raw_dir = r"C:..." # path of the raw dir
processed_dir = r"C:..." # path of the processed dir
@dataclass
class Files:
raw_path: Path = Path(raw_dir)
processed_path: Path = Path(processed_dir)
path_dict: Dict[str, Any] = field(
default_factory=lambda: {
"raw_train_file": Path(raw_path, "raw_train.csv"),
"processed_train_file": Path(processed_path, "processed_train.csv"),
}
)
Files().path_dict
这将引发错误name "raw_path" is not defined. 但是当您尝试在第一行之后立即打印raw_path 时,它可以完成,因此问题可能来自path_dict。我尝试将键值对替换为 "raw": Path(directory) 并且它有效,所以我认为这不是数据类型的问题。
上下文:我将dataclass 视为config 文件(func),这样当我需要调用默认路径时,我可以使用:
pd.read_csv(Files().path_dict["raw_train_file"])
【问题讨论】:
-
你在哪里定义了
directory?你做了什么进口? -
导入未添加到帖子中。
-
又是后期绑定,试试
lambda r=raw_file: {"raw": r}。 -
@jonrsharpe 谢谢,它成功了,我在这里阅读后期绑定:docs.python-guide.org/writing/gotchas
-
你真的会在那里使用 non-default 值吗?无论如何,属性可能更合适。