AttributeError: 'NoneType' object has no attribute '...'
AttributeError: 'NoneType' object has no attribute '...'
当我遇到这个错误时,我正在 Python 中使用双向链表:
def merge(self,other):
mergedCenter = HealthCenter()
selfPatient = self._head
otherPatient = other._head
print(selfPatient.elem)
print(selfPatient.elem < otherPatient.elem)
while (selfPatient or otherPatient):
if selfPatient.elem < otherPatient.elem:
mergedCenter.addLast(selfPatient.elem)
selfPatient = selfPatient.next
elif selfPatient.elem > otherPatient.elem:
mergedCenter.addLast(otherPatient.elem)
otherPatient = otherPatient.next
else:
mergedCenter.addLast(selfPatient.elem)
selfPatient = selfPatient.next
otherPatient = otherPatient.next
return (mergedCenter)
我得到这个输出:
Abad, Ana 1949 True 0
True
Traceback (most recent call last):
File "main.py", line 189, in <module>
hc3 = hc1.merge(hc2)
File "main.py", line 112, in merge
if selfPatient.elem < otherPatient.elem:
AttributeError: 'NoneType' object has no attribute 'elem'
已经实现了一种比较 .elem 的方法,您可以在第二个打印中清楚地看到,但我不明白为什么在第一个条件中它总是中断。
提前致谢。
解决方法:
必须考虑两个 DList 的长度,而不是获取两个值之一 'Nonetype'。这解决了更改 OR 为 AND,稍后检查哪个不是 'Nonetype' 以完成合并
这会检查是否有一个是非None,所以如果一个是,而不是另一个,则进入循环
while (selfPatient or otherPatient)
如果你想访问两个 elem
属性,那么 both 需要是非 None,需要你更改 or
至 and
否则,当只有一个是 None 时,您需要在 if 语句之前单独处理逻辑,然后可能会打破循环,以便达到 return。将现有逻辑的其余部分包装在 if selfPatient and otherPatient
中仍然不会有什么坏处,因为您正在使用来自两个
的属性
至于为什么变成None,那要看你链表迭代的逻辑了
当我遇到这个错误时,我正在 Python 中使用双向链表:
def merge(self,other):
mergedCenter = HealthCenter()
selfPatient = self._head
otherPatient = other._head
print(selfPatient.elem)
print(selfPatient.elem < otherPatient.elem)
while (selfPatient or otherPatient):
if selfPatient.elem < otherPatient.elem:
mergedCenter.addLast(selfPatient.elem)
selfPatient = selfPatient.next
elif selfPatient.elem > otherPatient.elem:
mergedCenter.addLast(otherPatient.elem)
otherPatient = otherPatient.next
else:
mergedCenter.addLast(selfPatient.elem)
selfPatient = selfPatient.next
otherPatient = otherPatient.next
return (mergedCenter)
我得到这个输出:
Abad, Ana 1949 True 0
True
Traceback (most recent call last):
File "main.py", line 189, in <module>
hc3 = hc1.merge(hc2)
File "main.py", line 112, in merge
if selfPatient.elem < otherPatient.elem:
AttributeError: 'NoneType' object has no attribute 'elem'
已经实现了一种比较 .elem 的方法,您可以在第二个打印中清楚地看到,但我不明白为什么在第一个条件中它总是中断。
提前致谢。
解决方法: 必须考虑两个 DList 的长度,而不是获取两个值之一 'Nonetype'。这解决了更改 OR 为 AND,稍后检查哪个不是 'Nonetype' 以完成合并
这会检查是否有一个是非None,所以如果一个是,而不是另一个,则进入循环
while (selfPatient or otherPatient)
如果你想访问两个 elem
属性,那么 both 需要是非 None,需要你更改 or
至 and
否则,当只有一个是 None 时,您需要在 if 语句之前单独处理逻辑,然后可能会打破循环,以便达到 return。将现有逻辑的其余部分包装在 if selfPatient and otherPatient
中仍然不会有什么坏处,因为您正在使用来自两个
至于为什么变成None,那要看你链表迭代的逻辑了