动态返回类型,由Python函数中的输入参数定义

动态返回类型,由Python函数中的输入参数定义,python,Python,假设我有一个函数,它接受一个类型对象,并返回该类型的一些值。像这样: >>> from typing import Any, List >>> def read(T: type) -> Any: # can we somehow declare T instead of Any? ... # generating and returning value of type T ... >>> read(str) This is a

假设我有一个函数,它接受一个
类型
对象,并返回该类型的一些值。像这样:

>>> from typing import Any, List
>>> def read(T: type) -> Any:  # can we somehow declare T instead of Any?
...     # generating and returning value of type T
...
>>> read(str)
This is a string
>>> read(int)
13
>>> read(List[float])
[1.2, 3.4]
等等(请注意,它不仅限于诸如
int
str
list
等基本类型,还适用于特定类的对象等)

是否可以指定具体的动态返回类型(而不是
Any
)?因此,例如,我可以编写
s=read(str)
,而不是
s:str=read(str)
,我的IDE会将hint
s
作为字符串键入

另外,在我的例子中,IDE是JetBrains PyCharm,但最好有一个“通用”解决方案。欢迎使用任何Python版本和模块。

解决方案,灵感来自于的评论:

from typing import Type, TypeVar

T = TypeVar('T')

def read(t: Type[T]) -> T: ...

我想你正在寻找。没有实际的方法来实现一个函数,该函数采用任意类型并返回该类型的实例。好吧,我已经实现了一个(足以满足我的需要),你可以将
read
视为一个函数,它返回几十种类型/类中的一种,这是我需要的。但我不想在返回类型声明中全部指定它们,因为我(但不是我的IDE)知道将返回的具体类型(这是函数的参数)