父母班级的参考兄弟姐妹



我正在尝试定义类型定义(PYI(文件。在我正在描述的模块中,有一个类具有类型的成员,该类型是父类的成员(有关清晰的说明,请参见下面的代码段(。我的问题是,如果Widget是在Dialog之前定义的,为什么WidgetDialog中引用时会引起片状8"未定义名称"错误?我如何正确参考Widget

    class types():
        class Widget():
            ...
        class Dialog():
            def __getattr__(name) -> Widget:
                ...

您需要将Widget引用为'Widget'(Python 3.7(:

class types():
    class Widget():
        ...
    class Dialog():
        def __getattr__(name) -> 'Widget':
            ...

我不确定在这种特殊情况下为什么有必要。

[edit]:对于某些角落情况,也许类型提示比衬里有点领先;无视linter,此语法不会丢弃错误,而您发布的lintax确实抛出了一个名称:name'widget'未定义。

oth,这有效:

class Widget:
    pass
class Dialog:
    def __getattr__(name) -> Widget:
        pass

最新更新