泛型,类 和实例

Generics, classes and instances

有什么概念可以结合泛型并概述 classes 和 class 的实例之间的关系吗?

有点人为的例子,但它表达了我的观点:

ManagedClass = TypeVar("ManagedClass")


class MyClass1:
   def my_method(self):
      ...


def instantiate_class(cls: ManagedClass, *args, **kwargs) -> ManagedClass:
    return cls(*args, **kwargs)

myclass1 = instantiate_class(MyClass1)

myclass1.my_method()  # IDE Warning: Parameter 'self' unfulfilled

警告显然是正确的,但不是我所追求的。

有什么方法可以为类型检查器提供这个概念,其中输入类型是 class 而 return 类型是 class 的一个实例?

你想要这样的东西:

def instantiate_class(cls: Type[ManagedClass], *args, **kwargs) -> ManagedClass:
    ...

进一步说明:

# Type an instance of a class:
foo: Foo = Foo()

# Type a class itself:
foo: Type[Foo] = Foo