Python类型注释:注释返回库对象的函数的正确方法

3

在这段代码中,注释类型函数的正确方法是什么?

from requests import Request, Session

def make_request(method: str, url: str) -> ??? : # Response object will be returned
    request = Request(method, url).prepare()
    session = Session()
    r = session.send(request)
    return r

那应该导入Response,还是应该使用TypeVar
2个回答

2

我认为你应该导入 Response 并使用它。创建 TypeVar 没有任何好处,反而会使类型更加复杂:

  1. 如果你的模块已经在其他地方使用了 Response(并因此被导入),那么你不会考虑不使用它进行类型提示。
  2. 如果你稍后向这个模块中引入另一个函数或其他内容,并且需要在那里使用 Response 类,你将无法匹配实际的 Response,因为你之前定义了 TypeVar
  3. 如果你的模块被其他模块(甚至是第三方模块)导入,一个返回 Response 的函数伪装成自定义的 TypeVar 会让代码更加混乱。

0
你想要这个吗?
from requests import Request, Session, Response


def make_request(method: str, url: str) -> Response : # Response object will be returned
    request = Request(method, url).prepare()
    session = Session()
    r = session.send(request)
    return r

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接