Ошибка атрибута Python - PullRequest
       3

Ошибка атрибута Python

3 голосов
/ 13 марта 2011

возникли проблемы с этой ошибкой в ​​python:

File "F:\dykrstra", line 36, in route
while node.label != node.prevNode.label:
AttributeError: 'NoneType' object has no attribute 'label'

Внутри цикла while:

 while node.label != node.prevNode.label:
    node = node.prevNode
    labels.append(node.label)

Я думаю, это относится к этому:

   def __init__(self, label):
        self.label = label
        self.neighbours = []
        self.distances = []
        self.prevNode = None
        self.totalDistance = 0

Я не уверен, почему prevNode не нравится, когда ему ничего не назначается, пожалуйста, помогите.

Ответы [ 3 ]

6 голосов
/ 13 марта 2011

Ваш конструктор устанавливает self.prevNode на None, и позже вы пытаетесь получить доступ к node.prevNode.label, что похоже на попытку доступа к None.label. None не имеет никаких атрибутов, поэтому попытка доступа к ним даст вам AttributeError.

0 голосов
/ 23 мая 2015

Исключение AttributeError происходит, когда атрибут объекта недоступен. Ссылка на атрибут является первичным, за которым следует точка и имя.

Так что в основном вам нужно дважды проверить ваш объект и имя атрибута.

Например, чтобы вернуть список допустимых атрибутов для этого объекта, используйте dir():

dir(node)
0 голосов
/ 13 марта 2011

Согласно другим ответам (и сообщению об ошибке), вы получаете доступ к None.label. Если ожидается, что node может быть None, вам необходимо проверить его перед добавлением.

while node.label != node.prevNode.label:
    node = node.prevNode
    if node is not None:
        labels.append(node.label)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...