Python repr/str NoneType 没有属性
Python repr/str NoneType has no attribute
嗨,我最近遇到了一些奇怪的事情。我有以下 class:
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) + \
"number of children: {} \n".format(len(self.children))
return string
现在我有一个存储在 tmp 中的实例字典,键是实例的名称,不知何故它具有以下行为
print(tmp["650"].name)
>>> 650
try:
print(tmp["650"])
except Exception as e:
print(e)
>>> 'NoneType' object has no attribute 'name'
这只会发生在 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
我试图搜索,但关于 str/repr 的 NoneType 异常的信息似乎很少。感谢阅读,如果您需要更多信息,请告诉我。
您的一个 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
嗨,我最近遇到了一些奇怪的事情。我有以下 class:
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) + \
"number of children: {} \n".format(len(self.children))
return string
现在我有一个存储在 tmp 中的实例字典,键是实例的名称,不知何故它具有以下行为
print(tmp["650"].name)
>>> 650
try:
print(tmp["650"])
except Exception as e:
print(e)
>>> 'NoneType' object has no attribute 'name'
这只会发生在 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
我试图搜索,但关于 str/repr 的 NoneType 异常的信息似乎很少。感谢阅读,如果您需要更多信息,请告诉我。
您的一个 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