mypy error:Incompatible types in assignment (expression has type "List[str]", variable has type "str")
mypy error:Incompatible types in assignment (expression has type "List[str]", variable has type "str")
我有这个非常简单的功能:
import datetime
def create_url(check_in: datetime.date) -> str:
"""take date such as '2018-06-05' and transform to format '06%2F05%2F2018'"""
_check_in = check_in.strftime("%Y-%m-%d")
_check_in = _check_in.split("-")
_check_in = _check_in[1] + "%2F" + _check_in[2] + "%2F" + _check_in[0]
return f"https://www.website.com/?arrival={_check_in}"
mypy 抛出以下错误:
error:Incompatible types in assignment (expression has type "List[str]", variable has type "str")
第 6 行 _check_in = _check_in.split("-")
。
我试过在第 6 行重命名 _check_in
,但这没有任何区别。这个功能工作正常。
这是预期的行为吗?我该如何修复错误。
谢谢!
对我来说似乎工作正常?这是我对你的代码的实现
import datetime
def create_url(check_in):
"""take date such as '2018-06-05' and transform to format '06%2F05%2F2018'"""
_check_in = check_in.strftime("%Y-%m-%d")
_check_in = _check_in.split("-")
_check_in = _check_in[1] + "%2F" + _check_in[2] + "%2F" + _check_in[0]
return "https://www.website.com/?arrival={0}".format(_check_in)
today = datetime.date.today()
print(create_url(today))
>>> https://www.website.com/?arrival=05%2F28%2F2018
第一行_check_in = check_in.strftime("%Y-%m-%d")
,_check_in
是一个字符串(或者mypy想的str
),然后在_check_in = _check_in.split("-")
_check_in
就变成了一个字符串列表 (List[str]
),因为 mypy 已经认为这应该是一个 str
,它会抱怨(或者更确切地说警告你,因为这不是一个特别好的做法)。
至于你应该如何修复它,只要适当地重命名变量,或者你可以做 _check_in = _check_in.split("-") # type: List[str]
(还有 _check_in = _check_in[1] + "%2F" + _check_in[2] + "%2F" + _check_in[0] # type: str
下面的行)如果你死定了使用 _check_in
作为变量名。
编辑
也许你想这样做
import datetime
def create_url(check_in: datetime.datetime) -> str:
return "https://www.website.com/?arrival={0}".format(
check_in.strftime('%d%%2F%m%%2F%Y'),
)
我有这个非常简单的功能:
import datetime
def create_url(check_in: datetime.date) -> str:
"""take date such as '2018-06-05' and transform to format '06%2F05%2F2018'"""
_check_in = check_in.strftime("%Y-%m-%d")
_check_in = _check_in.split("-")
_check_in = _check_in[1] + "%2F" + _check_in[2] + "%2F" + _check_in[0]
return f"https://www.website.com/?arrival={_check_in}"
mypy 抛出以下错误:
error:Incompatible types in assignment (expression has type "List[str]", variable has type "str")
第 6 行 _check_in = _check_in.split("-")
。
我试过在第 6 行重命名 _check_in
,但这没有任何区别。这个功能工作正常。
这是预期的行为吗?我该如何修复错误。
谢谢!
对我来说似乎工作正常?这是我对你的代码的实现
import datetime
def create_url(check_in):
"""take date such as '2018-06-05' and transform to format '06%2F05%2F2018'"""
_check_in = check_in.strftime("%Y-%m-%d")
_check_in = _check_in.split("-")
_check_in = _check_in[1] + "%2F" + _check_in[2] + "%2F" + _check_in[0]
return "https://www.website.com/?arrival={0}".format(_check_in)
today = datetime.date.today()
print(create_url(today))
>>> https://www.website.com/?arrival=05%2F28%2F2018
第一行_check_in = check_in.strftime("%Y-%m-%d")
,_check_in
是一个字符串(或者mypy想的str
),然后在_check_in = _check_in.split("-")
_check_in
就变成了一个字符串列表 (List[str]
),因为 mypy 已经认为这应该是一个 str
,它会抱怨(或者更确切地说警告你,因为这不是一个特别好的做法)。
至于你应该如何修复它,只要适当地重命名变量,或者你可以做 _check_in = _check_in.split("-") # type: List[str]
(还有 _check_in = _check_in[1] + "%2F" + _check_in[2] + "%2F" + _check_in[0] # type: str
下面的行)如果你死定了使用 _check_in
作为变量名。
编辑
也许你想这样做
import datetime
def create_url(check_in: datetime.datetime) -> str:
return "https://www.website.com/?arrival={0}".format(
check_in.strftime('%d%%2F%m%%2F%Y'),
)