首页 > 解决方案 > 如何创建具有相同类型成员的静态类型 python 类

问题描述

我来自java背景,学习python。我正在尝试创建一个包含同一类成员的 python 类(具有静态类型)。

mynode.py

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

主文件

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

标签: pythonpython-3.xmypy

解决方案


在定义的时候__init__,类本身还没有定义,更不用说绑定到一个名字了。改用前向引用,由字符串文字组成。

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

推荐阅读