mypy 赋值中的类型不兼容

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

我在

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 接受我的解决方案吗?

python python-3.x type-hinting mypy
2个回答
0
投票

按照@chepner 的建议,我创建了一个 include 属性,mypy 没有抱怨

这是代码片段

    @property
    def token_exp(self) -> datetime:
        return datetime.utcnow() + self.lifetime

0
投票

这应该对你有用:

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
© www.soinside.com 2019 - 2024. All rights reserved.