微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

用完整的类路径注释

如何解决用完整的类路径注释

使用包含类型完整路径的字符串注释变量/参数的正确方法是什么(如果有的话):

def make_json_response(obj: 'jfs.serializers.BaseModel',status=200):
    """Make a JSON response out of a Pydantic model instance.
    """
    return flask.Response(
        response=obj.json(),status=status,mimetype='application/json',)

我不想在相关模块中导入 jfs.serizalizers 以避免循环导入。

PyCharm 不理解这一点:

enter image description here

解决方法

如果你想导入一个模块只是为了类型检查,你可以导入常量from typing import TYPE_CHECKING。 然后,您可以将导入 jfs.serializers.BaseModel 包含在 if 语句中,该语句仅在 TYPE_CHECKING 为 True 时导入 BaseModel。

TYPE_CHECKING 是一个特殊的常量,只有在检查变量类型时才为 True。在运行时它是 False。

from typing import TYPE_CHECKING

if TYPE_CHECKING:
    from jfs.serializers import BaseModel

也许您还必须添加 from __future__ import annotations 导入。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。