擅长:python、mysql、java
<p>python3.7+用户应该只利用<a href="https://docs.python.org/3/library/dataclasses.html#dataclasses.field" rel="nofollow noreferrer">^{<cd1>}</a>或<a href="https://docs.python.org/3/library/dataclasses.html#post-init-processing" rel="nofollow noreferrer">^{<cd2>}</a>中的<a href="https://docs.python.org/3/library/dataclasses.html#post-init-processing" rel="nofollow noreferrer">^{<cd2>}</a>钩子。对于使用旧版Python的用户,请继续阅读。。在</p>
<p>我认为你应该可以用一层额外的类型来完成:</p>
<pre><code>from datetime import datetime
from typing import NamedTuple
class _PdfContentRecord(NamedTuple):
filename: str
page: int
cache: dict
data: dict = None
accessed: str = None
class PdfContentRecord(_PdfContentRecord):
def __new__(cls, filename, page, cache, data=None, accessed=None):
if data is None:
data = {}
if accessed is None:
accessed = datetime.now().isoformat()
return super().__new__(cls, filename, page, cache, data, accessed)
</code></pre>
<p>不过,可以说,您首先失去了使用<code>NamedTuple</code>的一些好处,而且还可以自己编写子类型。在</p>