如何创建作为同一类属性的替代的类属性

时间:2018-11-12 07:00:44

标签: python python-3.7

我有以下课程:

@dataclass
class thing:
    DATE: datetime.datetime
    BEG_DATE: datetime.datetime = self.DATE.replace(day=1)) 

但是我得到这个错误:

  

NameError(“未定义名称'DATE'”)

Visual Studio指向我要定义BE​​G_DATE的第4行。

1)为什么?

2)如何创建具有BEG_DATE属性并仅将日期更改为1的属性DATE

我尝试过field(default_factory=self.DATE.replace(day=1)),但是遇到了同样的错误。

1 个答案:

答案 0 :(得分:1)

对于依赖于其他字段值的字段,您需要利用Post-init processing。现在,Python正在尝试在创建类时而不是在创建实例时评估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))