gpt4 book ai didi

python - 如何将 datetime.now().isoformat() 添加到 NamedTuple 的 __init__?

转载 作者:行者123 更新时间:2023-12-01 13:18:38 25 4
gpt4 key购买 nike

我当然试过:

class PdfContentRecord(NamedTuple):
filename: str
page: int
cache: dict
data: dict = dict()
accessed: str = None

def __new__(cls, *args, **kwargs):
self = super().__new__(*args, **kwargs)
self.accessed = datetime.now().isoformat()
return self

但我得到的错误与 How to provide additional initialization for a subclass of namedtuple? 完全相同

我不知道是不是 attrs可以帮助我(太难理解)。 dataclasses.dataclass可能会有所帮助,但它仅支持 Python 3.7。

或者我可以写我的类,可能也用 __slots__ ...

编辑:

Did you read the answer in the question you linked?



from collection import namedtuple 合作,但不是 from typing import NamedTuple .

最佳答案

相当漂亮的答案,需要 pip install attrs (这激发了 dataclass )

import attr

@attr.s
class PdfFileRecord:
name: str = attr.ib()
type: str = attr.ib()
cache: dict = attr.ib()
data: dict = attr.ib(factory=dict)
accessed: str = attr.ib(factory =lambda: datetime.now().isoformat())

对于 dataclass 版本,无需 pip ,但是 at least Python 3.6 is needed .
import dataclasses

@dataclasses.dataclass
class PdfFileRecord:
name: str
type: str
cache: dict
data: dict = dataclasses.field(default_factory =dict)
accessed: str = dataclases.field(default_factory =lambda: datetime.now().isoformat())

关于python - 如何将 datetime.now().isoformat() 添加到 NamedTuple 的 __init__?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52212631/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com