如何使用相同类型的成员创建静态类型 python class

How to create statically typed python class with same typed member

我来自java背景,正在学习python。我正在尝试创建一个 python class (使用静态类型),其中包含相同 class.

的成员

mynode.py

class MyNode():
    def __init__(self, id: str=None, child_node: MyNode=None):
        self._id = id
        self._child_node = child_node

main.py

import mynode

def main():
    n1 = MyNode('child1')

if __name__ == '__main__':
    main()

但是执行的时候出现了如下错误。如何解决?

...\py-tests>python main.py
Traceback (most recent call last):
  File "main.py", line 1, in <module>
    import mynode
  File "...\py-tests\mynode.py", line 1, in <module>
    class MyNode():
  File "...\py-tests\mynode.py", line 2, in MyNode
    def __init__(self, id: str=None, child_node: MyNode=None):
NameError: name 'MyNode' is not defined

在定义 __init__ 时,class 本身尚未定义,更不用说绑定到名称了。请改用 forward reference,由字符串文字组成。

class MyNode:
    def __init__(self, id: str = None, child_node: 'MyNode' = None):