我正在尝试定义类型定义(PYI(文件。在我正在描述的模块中,有一个类具有类型的成员,该类型是父类的成员(有关清晰的说明,请参见下面的代码段(。我的问题是,如果Widget
是在Dialog
之前定义的,为什么Widget
在Dialog
中引用时会引起片状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