Python类型,命名元组在调用_asdict()时缺少默认值

Python类型,命名元组在调用_asdict()时缺少默认值,python,python-3.7,python-typing,Python,Python 3.7,Python Typing,我有这门课 from typing import Tuple, NamedTuple, cast, List, Dict class PdfRequestDownloadData(NamedTuple): workspace_id: int since: str until: str project_ids: List[int] date_format = "YYYY-MM-DD" duration_format = "improved" hide_amounts =

我有这门课

from typing import Tuple, NamedTuple, cast, List, Dict
class PdfRequestDownloadData(NamedTuple):
  workspace_id: int
  since: str
  until: str
  project_ids: List[int]
  date_format = "YYYY-MM-DD"
  duration_format = "improved"
  hide_amounts = True
  hide_rates = True
  order_by = "title"
  order_dir = "asc"
  sub_grouping = "time_entries"
请注意,底部部分是默认值,例如带有=

我呼吁:

x = PdfRequestDownloadData(project_ids=[projectid], workspace_id=workspaceid,since=fromdate, until=todate)

print(x._asdict())
输出:

OrderedDict([('workspace_id', 98333), ('since', '2019-08-01'), ('until', '2019-08-31'), ('project_ids', [123334])])

所有的默认值都到哪里去了?什么是好的解决方案?

您缺少“默认值”的类型注释,因为它们是类属性。如果为它们指定类型,则它们将是实例属性:

class C:
    required: int
    optional: int = 5

这些不是默认值,它们是类变量。这就是他们失踪的原因,很遗憾。