我正在尝试定义类型定义 (pyi) 文件。在我描述的模块中,有一个类,其成员的类型是父类的成员(请参阅下面的代码片段以获得更清晰的解释)。我的问题是,如果 Widget
在 Dialog
之前定义,为什么 Widget
在 Dialog 内部引用时会引发 flake8“未定义名称”错误
?如何正确引用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':
...
我不确定为什么在这种特殊情况下有必要。
[编辑]:对于某些极端情况,类型提示可能比短绒提前一些;忽略 linter,此语法不会引发错误,而您发布的语法则会引发 NameError: name 'Widget' is not Defined。
另外,这有效:
class Widget:
pass
class Dialog:
def __getattr__(name) -> Widget:
pass
关于python - 父类的引用 sibling ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56132098/