(Python) kann nicht auf das Attribut eines Objekts zugreifen, es sei denn, ich überprüfe die Nichtigkeit. Warum?Python

Python-Programme
Guest
 (Python) kann nicht auf das Attribut eines Objekts zugreifen, es sei denn, ich überprüfe die Nichtigkeit. Warum?

Post by Guest »

Ein LeetCode-Problem, bei dem es um verknüpfte Listen geht, die zu dieser Struktur gehören:

Code: Select all

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
Beim Versuch, den Wert des nächsten Knotens zu drucken, ist ein Fehler aufgetreten, funktionierte aber bei einer Nullitätsprüfung immer noch (es ging nicht einmal zum anderen Knoten-Anweisung).
Angenommen, l1 ist eine Instanz der Klasse ListNode mit print(l1.nextNode) ergibt:

Code: Select all

ListNode{val: 4, next: ListNode{val: 3, next: None}}
Und: nextNode = l1.next
Warum schlägt dies fehl: print (nextNode.val)

Code: Select all

AttributeError: 'NoneType' object has no attribute 'val'
Während dies funktioniert:

Code: Select all

if nextNode is not None:
print(nextNode.val)
else:
print("Node is None")
Extra:
Ich frage mich, ob die Antwort auf die obige Frage damit zusammenhängt, warum dies auch mit try/catch fehlschlägt:

Code: Select all

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")
Während dies funktioniert und den ausgeführten Try-Block ausgibt:

Code: Select all

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")

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post