我正在处理时间序列,想按日期/时间检索和切片。理想情况下,我会利用现有的 [:] 语法。
例如(见最后一行):
from datetime import datetime
from typing import Union
class T:
def __getitem__(self, key: datetime | slice) -> Union['T', float]:
if isinstance(key, slice):
return T()
if isinstance(key, datetime):
return 42
raise ValueError()
t = T()
v = t[datetime(2020, 1, 1)] # OK
t2 = t[datetime(2020, 1, 1):datetime(2021, 1, 1)] # Not OK
这运行正常,但是当通过 mypy 运行它时,它在最后一行产生这个错误:
error: Slice index must be an integer, SupportsIndex or None [misc]
Found 1 error in 1 file (checked 1 source file)
除了完全禁用此错误之外,是否有一种方法可以使此代码通过 mypy?
或者我正在做我不应该做的事情?