[英]How to deal with Generics in Python?
我在 Python 中有一个关于 generics 的问题。它是关于方法的返回值的,具体来说,我正在寻找一种具有通用返回类型的方法。
例如在 C# 我有这样的东西:
public async Task<R> PostAsync<T, R>(string url, T body) {
...
...
...
return JsonConvert.DeserializeObject<R>(responseJson);
}
R 是响应类型,T 是正文的类型。 所以关键是要返回 R 的类型。我可以在 Python 中实现这样的东西吗? 抱歉,如果这个问题看起来很奇怪,我是 Python 的新手,最初来自 C#,目前正在努力进入 Python。
非常感谢你的帮助!
如果您的目标是为了 static 类型检查器而使用正确的类型注释,您可以这样做:
from typing import Type, TypeVar
R = TypeVar("R")
class BodyType:
...
class MyClass:
...
async def post(self, url: str, body: BodyType, return_class: Type[R]) -> R:
# Do the thing...
return return_class()
请注意,由于 Python 不是静态类型的,因此严格来说没有真正等同于通用方法/函数。 没有用于指示 function 的类型参数的特殊语法。您可以通过简单地将 class 作为参数传递给该方法来实现类似的构造。
通用类型确实存在。 您可以通过从typing.Generic
基类 class 继承来创建您自己的。但同样,它们在运行时并不重要,主要为了 static 类型检查器的利益而存在。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.