我在 StackOverflow 上看到过其他类似的例子,但我不明白任何答案(我还是一个新程序员),我看到的其他例子也不像我的,否则我不会发布这个问题。
我在 Windows 7 上运行 Python 3.2。
我以前从来没有遇到过这种情况,而且我已经多次以这种方式上课,所以我真的不知道这次有什么不同。唯一的区别是我没有制作所有的 Class 文件。我得到了一个模板来填写和一个测试文件来试一试。它适用于测试文件,但不适用于我的文件。我一直在以与测试文件完全相同的方式调用类中的方法(例如 Lineup.size())
这是我的课:
类队列: # 构造函数,它创建一个新的空队列: def __init__(self): self.__items = [] # 将新项目添加到队列的后面,并且不返回任何内容: def 队列(自我,项目): self.__items.insert(0,item) 返回 # 移除并返回队列中最前面的项目。 # 如果队列为空,则不返回任何内容。 def 出队(自我): 如果 len(self.__items) == 0: 返回无 别的: 返回 self.__items.pop() # 返回队列中最前面的项目,并且不更改队列。 def 窥视(自我): 如果 len(self.__items) == 0: 返回无 别的: 返回 self.__items[(len(self.__items)-1)] # 如果队列为空,则返回 True,否则返回 False: def is_empty(self): 返回 len(self.__items) == 0 # 返回队列中的项目数: 默认尺寸(自我): 返回 len(self.__items) # 从队列中删除所有项目,并将大小设置为 0: def 清除(自我): del self.__items[0:len(self.__items)] 返回 # 返回队列的字符串表示形式: def __str__(self): return "".join(str(i) for i in self.__items)
这是我的程序:
from queue import Queue
Lineup = Queue()
while True:
decision = str(input("Add, Serve, or Exit: ")).lower()
if decision == "add":
if Lineup.size() == 3:
print("There cannot be more than three people in line.")
continue
else:
person = str(input("Enter the name of the person to add: "))
Lineup.queue(person)
continue
elif decision == "serve":
if Lineup.is_empty() == True:
print("The lineup is already empty.")
continue
else:
print("%s has been served."%Lineup.peek())
Lineup.dequeue()
continue
elif (decision == "exit") or (decision == "quit"):
break
else:
print("%s is not a valid command.")
continue
这是我输入“添加”作为决策变量时的错误消息:
第 8 行,在 builtins.AttributeError: 'Queue' object has no attribute 'size'
那么,这里发生了什么?这个有什么不同?