(Python) не может получить доступ к атрибуту объекта, пока я не проверю недействительность, почему?Python

Программы на Python
Ответить
Anonymous
 (Python) не может получить доступ к атрибуту объекта, пока я не проверю недействительность, почему?

Сообщение Anonymous »

Проблема LeetCode, связанная со связанными списками, имеющими такую ​​структуру:
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next

Выдала ошибку при попытке напечатать val следующего узла, но все равно работала при проверке на нулевое значение (он даже не перешел к else
) code>).
Предполагая, что l1 является экземпляром класса ListNode с print(l1.nextNode), дает:
ListNode{val: 4, next: ListNode{val: 3, next: None}}
И: nextNode = l1.next
Почему это Сбой: print (nextNode.val)

AttributeError: 'NoneType' object has no attribute 'val'

Пока это Работает:
if nextNode is not None:
print(nextNode.val)
else:
print("Node is None")

Дополнительно:
Интересно, связан ли ответ на приведенный выше вопрос с тем, почему это также Не работает с помощью try/catch:
try:
print("try block executed")
print(nextNode.val)
except:
**print("except block executed1")
print(nextNode.val)**
if nextNode is not None:
print("except block executed"2)
print(nextNode.val)
else:
print("Node is None")

Пока это Работает и печатает, попробуйте выполнить блок:
try:
print("try block executed")
print(nextNode.val)
except:
if nextNode is not None:
print("except block executed")
print(nextNode.val)
else:
print("Node is None")


Подробнее здесь: https://stackoverflow.com/questions/793 ... ullity-why
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»