gpt4 book ai didi

Python 类型提示和 linter

转载 作者:太空狗 更新时间:2023-10-29 21:45:26 25 4
gpt4 key购买 nike

我一直在为我们的 python 项目添加静态类型检查,例如:

from typing import List
from something import MyOtherClass

class MyClass:
def __init__(self) -> None:
self.some_var = None # type: List[MyOtherClass]

但是,现在我们使用的 linter(flake8 和 pylint)将 List 报告为未使用的变量,因为它们未在实际代码中使用。 (顺便说一下,pep8 处理得很好)。

所以我们最终将代码更改为:

from typing import List  # noqa # pylint: disable=unused-import
from something import MyOtherClass # noqa # pylint: disable=unused-import

class MyClass:
def __init__(self) -> None:
self.some_var = None # type: List[MyOtherClass]

有没有更好的办法解决这个问题?我们不想禁用所有未使用的导入警告。

最佳答案

Python 3.6 实现 PEP 526: Syntax for Variable Annotations ,顾名思义,它为变量注释引入了新语法,消除了对类型注释的需要。

在新语法中,您的代码将被重写为:

from typing import List, Optional
from something import MyOtherClass

class MyClass:

def __init__(self) -> None:
self.some_var: Optional[List[MyOtherClass]] = None

... 或者:

from typing import List, Optional
from something import MyOtherClass

class MyClass:

some_var: Optional[List[MyOtherClass]]

def __init__(self) -> None:
self.some_var = None

由于 ListMyOtherClass 现在在代码中显示为实际标记,而不是注释,所以 linters 应该可以毫不费力地确认它们确实被使用了。

关于Python 类型提示和 linter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40781249/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com