如何创建 class 属性,该属性是同一 class 属性的变体
How to create class attribute that is an alteration of the same class attribute
我有以下 class:
@dataclass
class thing:
DATE: datetime.datetime
BEG_DATE: datetime.datetime = self.DATE.replace(day=1))
但是我得到这个错误:
NameError("name 'DATE' is not defined")
Visual Studio 指向我试图定义 BEG_DATE.
的第 4 行
1) 为什么?
2) 如何创建采用 DATE
属性并将日期更改为 1 的属性 BEG_DATE
?
我试过 field(default_factory=self.DATE.replace(day=1))
,但我遇到了同样的错误。
对于依赖于其他字段值的字段,您需要利用Post-init processing。你现在这样做的方式是,Python 试图在创建 class 时计算 self.DATE.replace(day=1)
,而不是在创建实例时计算。
from dataclasses import dataclass, field
@dataclass
class thing:
DATE: datetime.datetime
BEG_DATE: datetime.datetime = field(init=False)
def __post_init__(self):
self.BEG_DATE = self.DATE.replace(day=1))
我有以下 class:
@dataclass
class thing:
DATE: datetime.datetime
BEG_DATE: datetime.datetime = self.DATE.replace(day=1))
但是我得到这个错误:
NameError("name 'DATE' is not defined")
Visual Studio 指向我试图定义 BEG_DATE.
的第 4 行1) 为什么?
2) 如何创建采用 DATE
属性并将日期更改为 1 的属性 BEG_DATE
?
我试过 field(default_factory=self.DATE.replace(day=1))
,但我遇到了同样的错误。
对于依赖于其他字段值的字段,您需要利用Post-init processing。你现在这样做的方式是,Python 试图在创建 class 时计算 self.DATE.replace(day=1)
,而不是在创建实例时计算。
from dataclasses import dataclass, field
@dataclass
class thing:
DATE: datetime.datetime
BEG_DATE: datetime.datetime = field(init=False)
def __post_init__(self):
self.BEG_DATE = self.DATE.replace(day=1))