如何为通用工厂方法创建类型提示?

Dav*_*son 1 python type-hinting python-3.x

如何声明类型提示以指示函数返回作为参数传递的类引用的实例?

声明如下似乎不对,因为它表明返回的类型与参数的类型相同:

from typing import TypeVar


T = TypeVar('T')

def my_factory(some_class: T) -> T:
    instance_of_some_class = some_class()
    return instance_of_some_class
Run Code Online (Sandbox Code Playgroud)

用法示例:

class MyClass:
    pass

my_class = my_factory(MyClass)  # Inferred type should be MyClass
Run Code Online (Sandbox Code Playgroud)

Dav*_*son 6

根据PEP-484,正确的方法是使用Type[T]参数:

from typing import TypeVar, Type


T = TypeVar('T')

def my_factory(some_class: Type[T]) -> T:
    instance_of_some_class = some_class()
    return instance_of_some_class
Run Code Online (Sandbox Code Playgroud)

然而,似乎我的编辑器(尚)支持这一点.