我应该先将 mypy 转换为字符串,然后再转换为 int 吗?

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

我有一个配置已加载到

dict
中。它包含一个整数
config["logging"]["backup_count"]
。然而,
type(config["logging"]["backup_count"])
返回
object
。因此,当我将其传递到以下内容时:

TimedRotatingFileHandler(log_file, backupCount=config["logging"]["backup_count"], when="midnight", interval=1)

mypy 抱怨我试图将

object
放在需要
int
的地方。当然,这可以通过添加一些类型转换来解决:

TimedRotatingFileHandler(log_file, backupCount=int(str(config["logging"]["backup_count"])), when="midnight", interval=1)

但这看起来很笨拙。我应该这样做吗?

我是 mypy 的新手,正在使用 python 进行输入。我想知道处理此类事情的正确协议。具体来说,我应该进行 -to-str-to-int 转换还是其他操作?

编辑:我应该使用

TypedDict
吗?例如,如果我的字典是从
.toml
文件中读取的,是否有一种简单的方法可以通过正确的输入来创建
TypedDict
(我知道配置类型应该提前)?

python coding-style python-typing mypy typechecking
1个回答
0
投票

您的问题只是因为类型检查问题。如果

TimedRotatingFileHandler.__init__()
可以接受
object
而不是
int
,那么应该没问题。您可能可以忽略类型检查问题。它们适用于名为 actually 的方法/函数不接受
object
类型的对象并导致
TypeError
的情况。如果这只是类型注释问题,我建议您忽略它或将注释更改为类似这样的内容(假设
TimedRotatingFileHandler
是您自己的类,因此您可以更改它):

def __init__(self, logfile: File, backupCount: int|object, *args, **kwargs):
    # code here
© www.soinside.com 2019 - 2024. All rights reserved.