Python 类型:如何在类型提示中引用动态创建的类

问题描述

我正在尝试为我的元模型的实现部分创建一个可迭代的 textxClass 实例,但由于该类是动态创建的,我很不走运。是否还有一些巧妙的方法来输入我的模型的各个元素,还是我必须基本上使用 Iterable[Any]

解决方法

您可以简单地动态创建类,并通过将其设置为引号来 forward reference。链接说:

当类型提示包含尚未定义的名称时,该定义可能会表示为字符串文字,以便稍后解析。

一个最小的例子:

def expect_class_instance(instance: "MyClass"):
    pass


def factory():
    class SomeClass:
        pass

    return SomeClass

MyClass = factory()