Ranger
Ranger

Reputation: 653

Python Attribute error

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

Answers (3)

kenorb
kenorb

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

Chris Farmiloe
Chris Farmiloe

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

Sven Marnach
Sven Marnach

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

Related Questions