您好我最近遇到了一些奇怪的事情。我有以下课程:
print(tmp["650"].name)
>>> 650
try:
print(tmp["650"])
except Exception as e:
print(e)
>>> 'NoneType' object has no attribute 'name'
现在我有一个存储在 tmp 中的实例的dict,其中键是实例的名称,并且它以某种方式具有以下行为
print(tmp["632"].name)
>>> 632
try:
print(tmp["632"])
except Exception as e:
print(e)
>>> ---- TreeNode Object ----
>>> Name: 632
>>> parent: 650
>>> number of children: 3
这只发生在dict的一个实例上,所有其余的工作都很好。我以同样的方式初始化了所有实例,所以这让我很困惑。
JFrame frame = new JFrame();
JTextField text = new JTextField();
frame.add(text);
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowOpened(WindowEvent e) {
text.requestDefaultFocus();
}
});
我尝试搜索,但似乎很少有关于str / repr的NoneType异常的信息。感谢阅读,如果您需要更多信息,请告诉我。
答案 0 :(得分:0)
您的TreeNode
个实例之一None
属parent
属性。在这种情况下,您尝试恢复不存在的None.name
。
要处理没有父母的节点,您应该在__str__
方法中通过替换...
"parent: {} \n".format(self.parent.name)
...通过
"parent: {} \n".format(self.parent.name if self.parent else None)
class TreeNode:
def __init__(self, name, parent):
self.name = name
self.parent = parent
self.children = []
def __str__(self):
string = "---- TreeNode Object ---- \n" + \
"name: {} \n".format(self.name) + \
"parent: {} \n".format(self.parent.name if self.parent else None) + \
"number of children: {} \n".format(len(self.children))
return string
>>> print(TreeNode('foo', None))
---- TreeNode Object ----
name: foo
parent: None
number of children: 0