我在
datetime
对象中添加 60 分钟。为此,我正在使用timedelta
,添加效果很好,但 mypy 抛出以下错误:
error: Incompatible types in assignment (expression has type "datetime", variable has type "int") [assignment]
代码如下:
from datetime import datetime, timedelta
class TokenExp:
LIFETIME = 60
def __init__(self, lifetime_in_minutes: int = LIFETIME) -> None:
self.lifetime = timedelta(minutes=lifetime_in_minutes)
self.token_exp = 0
def token_expiration(self):
now = datetime.utcnow()
self.token_exp = now + self.lifetime
return self.token_exp
我能做些什么让 mypy 接受我的解决方案吗?
按照@chepner 的建议,我创建了一个 include 属性,mypy 没有抱怨
这是代码片段
@property
def token_exp(self) -> datetime:
return datetime.utcnow() + self.lifetime
这应该对你有用:
from datetime import datetime, timedelta
from typing import Optional
class TokenExp:
LIFETIME: int = 60
def __init__(self, lifetime_in_minutes: int = LIFETIME) -> None:
self.lifetime: timedelta = timedelta(minutes=lifetime_in_minutes)
self.token_exp: Optional[datetime] = None
def token_expiration(self) -> datetime:
now = datetime.utcnow()
self.token_exp = now + self.lifetime
return self.token_exp