Пользователи Python 3.7+ должны просто воспользоваться преимуществами default_factory
или __post_init__
в классах данных .Для пользователей более старых версий Python читайте на ..
Я думаю, что вы должны быть в состоянии сделать это с дополнительным слоем типов:
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)
Возможно, однако, вы потеряете некоторые изПреимущества использования NamedTuple
в первую очередь, а также могут просто написать подтип самостоятельно.