Reputation: 653
having problems with this error in python:
File "F:\dykrstra", line 36, in route
while node.label != node.prevNode.label:
AttributeError: 'NoneType' object has no attribute 'label'
Inside this while loop:
while node.label != node.prevNode.label:
node = node.prevNode
labels.append(node.label)
I think it relates to this:
def __init__(self, label):
self.label = label
self.neighbours = []
self.distances = []
self.prevNode = None
self.totalDistance = 0
I'm not sure why prevNode doesn't like the nothing being assigned to it, please help.
Upvotes: 3
Views: 14369
Reputation: 166419
Exception AttributeError happens when attribute of the object is not available. An attribute reference is a primary followed by a period and a name.
So basically you need to double check your object and the attribute name.
For example to return a list of valid attributes for that object, use dir()
:
dir(node)
Upvotes: 0
Reputation: 14175
As per the other answers (and the error message) you are accessing None.label
. If it is expected that node
might be None
, then you will need to check for it before appending it.
while node.label != node.prevNode.label:
node = node.prevNode
if node is not None:
labels.append(node.label)
Upvotes: 0
Reputation: 601619
Your constructor sets self.prevNode
to None
, and later you try to access node.prevNode.label
, which is like trying to access None.label
. None
doesn't have any attributes, so trying to access any will give you an AttributeError
.
Upvotes: 6