gpt4 book ai didi

django - 如何让 Django、类型注释和 Flake8 协同工作?

转载 作者:行者123 更新时间:2023-12-02 07:10:04 24 4
gpt4 key购买 nike

我正在使用 Django/DRF。我想编写类型检查的Python。我也想要 linting。

Django 的模型结构涉及为每个模型创建一个管理器类,并将管理器类的一个实例分配给模型的 objects 成员。

由于我使用类型注释,管理器类的方法现在还包含对模型的引用。这会导致 flake8 报告其中一个错误。

这是一个例子:

class UserManager:

def create_user(email: str) -> User:
... ^^^^ [flake8] F821: undefined name 'User'

class User:

objects = UserManager()

如果我翻转它们,我会得到:

class User:

objects = UserManager()
^^^^^^^^^^^ [flake8] F821: undefined name 'UserManager'

class UserManager:

def create_user(email: str) -> User:
...

人们如何编写类型化、linted Django 代码?

最佳答案

在Python 3.7中,您可以使用from __future__导入注释来修复此问题,这将允许包含前向引用的类型注释。这比使用字符串注释(如另一个答案所建议的)更简单的代码重构和 linting 更好。使用引号只是针对不支持前向引用注释的旧版本 Python 的一种解决方法。在 Python 4(如果不是更早)中,这将是默认行为。

关于django - 如何让 Django、类型注释和 Flake8 协同工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52213757/

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