注释日期时间对象的推荐方法是什么?

问题描述 投票:0回答:1

假设我有一个需要两个日期时间并以秒为单位返回差值的函数:

import datetime


def diff(d1: datetime.datetime, d2: datetime.datetime) -> float:
    return (d2 - d1).total_seconds()


if __name__ == '__main__':
    d1 = datetime.datetime.now()
    d2 = datetime.datetime.now(datetime.timezone.utc)
    print(diff(d1, d2))

mypy告诉我这很好:

$ python3.8 -m mypy test.py
Success: no issues found in 1 source file

但是我收到TypeError:

TypeError: can't subtract offset-naive and offset-aware datetimes

错误消息中明确说明了原因。类型注释不够好。

我想这是一个很常见的情况。有没有推荐的方法可以正确使用mypy来注释时区感知和不知道日期时间对象?

datetime typing mypy python-3.8
1个回答
0
投票

一个潜在的解决方案是使用TypeVar,NewType和强制转换:

© www.soinside.com 2019 - 2024. All rights reserved.