【发布时间】:2021-03-11 22:20:53
【问题描述】:
我已经在 Python 中设置了一个简单的类,其中发布了一个默认为 utcnow() 时间的成员作为字符串。但是,当我创建该类的一个实例然后在几分钟后创建另一个实例时,它们都具有完全相同的发布时间。
如果在我创建的路线中,我通过posted=str(datetime.utcnow()) 它工作正常,因此 Python 可以正确获取计算机日期时间。我还在运行的 Heroku 应用程序上对此进行了测试,但遇到了同样的问题。
它放入的时间是应用程序首次运行的时间,就好像它被视为静态值一样。
import uuid
from datetime import datetime
from typing import Dict
from dataclasses import dataclass, field
from models.model import Model
@dataclass
class Dummy(Model):
collection: str = field(init=False, default='dummy')
text: str
posted: str = field(default=str(datetime.utcnow()))
_id: str = field(default_factory=lambda: uuid.uuid4().hex)
def json(self) -> Dict:
return {
"text": self.text,
"posted": self.posted,
"_id": self._id
}
【问题讨论】:
-
为什么不在类中添加和
__init__并在其中设置posted?每次创建类的实例时都应该设置属性。顺便提一下this。
标签: python class default-value python-datetime