0

你怎么能像这样从父类中暗示一个类?

class Cls1:
    class Cls2:
        p2: int

    class Cls3:
        p3: Cls2  # undefined name 'Cls2'

    class Cls4:
        p4: Cls2  # undefined name 'Cls2'
4

1 回答 1

0

是的,请参阅PEP 484 §Forward References

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

这种情况经常发生的情况是定义容器类,其中被定义的类出现在某些方法的签名中。

因此,在您的示例中,请在字符串中引用尚未定义的类型:

class Cls1:
    class Cls2:
        p2: int

    class Cls3:
        p3: 'Cls2'

    class Cls4:
        p4: 'Cls2'

请注意,虽然 Python 很乐意接受上述内容,但 mypy (v0.641) 似乎有一个错误并且找不到Cls2.

于 2018-10-26T13:06:10.973 回答