Python 堆栈len函数(链表)

Python 堆栈len函数(链表),python,Python,我试图使用链表实现堆栈,但我的\uu len\uuu函数似乎遇到了问题,当我尝试使用len(s)时,当我运行代码时,它只告诉我“stack”对象没有属性“size”。我是不是把堆栈的大小弄错了?我不确定 class Node: """A node for a linked list.""" def __init__(self, item): self.item = item self.next_node = None

我试图使用链表实现堆栈,但我的
\uu len\uuu
函数似乎遇到了问题,当我尝试使用
len(s)
时,当我运行代码时,它只告诉我“stack”对象没有属性“size”。我是不是把堆栈的大小弄错了?我不确定

class Node:
"""A node for a linked list."""

def __init__(self, item):
    self.item = item
    self.next_node = None


class Stack(object):
        
    def __init__(self):
        self.head = None

   

    def __len__(self):
        """ Returns the length --- calling len(s) will invoke this method """
        return self.size

由于您要自己实现此数据结构,因此您还需要自己跟踪大小。尝试将
self.size
初始化为0,然后每次添加或减去节点时从
size
中添加或减去一个。在这种情况下,这将意味着在
push
方法中增加
size
,在
pop
方法中减少
size

您会得到这个错误,因为您在
中引用的
self.size
没有定义任何地方。应该是这样的-

class Stack(object):

    def __init__(self):
        self.head = None
        self.size = 0

您认为该代码的哪一部分可能正在设置或维护
大小
?您认为
push
pop
可能需要维护它(和
\uuuuuu init\uuuuuu
初始化它)吗?请确保构造一个。请注意,这三个词都很重要:它应该只是一个示例,您不应该发布整个实际代码,而应该创建一个简单的示例来演示您的问题。此外,它应该是最小的,也就是说,它不应该包含任何不是证明问题绝对需要的内容。(大多数初学者的问题可以用不到5行简单的代码来演示。)而且应该是可复制的,这意味着如果我复制粘贴并运行代码,我会看到与您看到的完全相同的问题。在您的特定情况下,问题可以用一行代码来演示,因此,发布30行代码是多余的。另外,您是否真的认为是
#----开始学生部分---
#==结束学生部分===
导致了问题?