这对我来说似乎是一个错误,我真的不知道为什么
我有一个非常简单的自定义LinkedList类:
class MyLinkedList:
def __init__(self):
self.head = None
def __iter__(self):
self.currNode = self.head
return self
def __next__(self):
if self.currNode:
res = self.currNode
self.currNode = self.currNode.next
return res
else:
raise StopIteration
def addAtHead(self, val: int) -> None:
currNode = self.head
self.head = Node(val, currNode)
这个问题来自iter方法。在我向一个空的linkedList添加了一个head节点后,iter仍然认为self.head是空的!在调试节点中,我可以看到self.head是一个有效的not none实例,但将其值分配给self.currNode后,self.currNode变成了none
我认为这可能是一个属性问题,所以我将属性更改为属性。但问题依然存在。我错在哪里
@property
def head(self):
return self._head
@head.setter
def head(self, x):
self._head = x
正在添加我的调用堆栈:
ll = MyLinkedList()
ll.addAtTail(6)
ll.addAtHead(5)
ll[0] # is None
#where a __getitem__ is defined as:
def __getitem__(self, i):
n = 0
for node in self:
if n == i:
return node
n += 1
raise IndexError
class Node:
def __init__(self, val=None, next=None):
self.val = val
self.next = next
得到
相关问题 更多 >
编程相关推荐