如何使用相同类型的成员创建静态类型 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):
我来自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):