python - 如何创建具有相同类型成员的静态类型 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
解决方案
在定义的时候__init__
,类本身还没有定义,更不用说绑定到一个名字了。改用前向引用,由字符串文字组成。
class MyNode:
def __init__(self, id: str = None, child_node: 'MyNode' = None):
推荐阅读
- javascript - 如何解决这个 pm2 日志错误?
- javascript - 根据另一个 div 显示隐藏一个 div
- anaconda - 适用于 Windows 7 的 Python 2.7 的 Anaconda 能否在 Windows 上的 Python 2.6 上运行?
- git - 如何防止源树中没有提交消息?
- ios - AppStore 图标变为全黑
- mongodb - MongoDB更新:-更新嵌套在数组中的多个对象(在多个文档中)
- database - 在数据库中查找所有用户定义的公共同义词
- java - 如何在使用 XSL-FO 生成另一个 PDF 文件时合并一个 PDF 文件?
- git - 在私有存储库中添加公共 github 存储库作为子模块将使子模块存储库成为私有
- javascript - “const”如何影响变量的类型?