小编ten*_*nni的帖子

类型提示和@singledispatch:如何以可扩展的方式包含 `Union[...]`?

我正在重构一个将各种日期格式(即 ISO 8601 字符串、 、 等)转换datetime.datedatetime.datetimeUnix 时间戳的函数。

\n\n

我希望使用新函数@singledispatch而不是类型检查,但我不知道如何保留前一个函数的类型提示:

\n\n

旧功能:使用类型检查

\n\n
import datetime\nfrom typing import Union\n\n\nMyDateTimeType = Union[int, str, datetime.datetime, datetime.date, None]\n\n\n# How do I retain this functionality with @singledispatch?\n#                    \xe2\xac\x87\xef\xb8\x8f\xe2\xac\x87\xef\xb8\x8f\xe2\xac\x87\xef\xb8\x8f\xe2\xac\x87\xef\xb8\x8f\xe2\xac\x87\xef\xb8\x8f\xe2\xac\x87\xef\xb8\x8f\xe2\xac\x87\xef\xb8\x8f\ndef to_unix_ts(date: MyDateTimeType = None) -> Union[int, None]:\n    """Convert various date formats to Unix timestamp..."""\n    if type(date) is int or date is None:\n        return date\n\n    if type(date) is str:\n        # Handle string argument...\n\n    elif type(date) is datetime.datetime:\n        # Handle datetime argument...\n\n    elif type(date) …
Run Code Online (Sandbox Code Playgroud)

python type-hinting single-dispatch

6
推荐指数
1
解决办法
2377
查看次数

标签 统计

python ×1

single-dispatch ×1

type-hinting ×1