'Queue' object has no attribute 'size'
我在StackOverflow上看到过其他类似的例子,但是我不理解任何答案(我还是一个新的程序员),我看到的其他例子也不像我的,否则我不会发布这个问题。
我在Windows7上运行python 3.2。
我以前从未遇到过这样的情况,我也多次这样上课,所以我不知道这次有什么不同。唯一的区别是我没有制作所有的类文件;我得到了一个要填充的模板和一个要尝试的测试文件。它对测试文件有效,但对我的文件无效。我以与测试文件完全相同的方式调用类中的方法(例如,lineup.size())
这是我的课:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | class Queue: # Constructor, which creates a new empty queue: def __init__(self): self.__items = [] # Adds a new item to the back of the queue, and returns nothing: def queue(self, item): self.__items.insert(0,item) return # Removes and returns the front-most item in the queue. # Returns nothing if the queue is empty. def dequeue(self): if len(self.__items) == 0: return None else: return self.__items.pop() # Returns the front-most item in the queue, and DOES NOT change the queue. def peek(self): if len(self.__items) == 0: return None else: return self.__items[(len(self.__items)-1)] # Returns True if the queue is empty, and False otherwise: def is_empty(self): return len(self.__items) == 0 # Returns the number of items in the queue: def size(self): return len(self.__items) # Removes all items from the queue, and sets the size to 0: def clear(self): del self.__items[0:len(self.__items)] return # Returns a string representation of the queue: def __str__(self): return"".join(str(i) for i in self.__items) |
这是我的计划:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | 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"对象没有"size"属性
那么,这是怎么回事?这个有什么不同?
python 3已经有了一个
将您的
尝试重命名其他名称的大小,或在列表中实现一个计数器,例如
1 2 3 4 5 | def get_size(self): cnt = 0 for i in self.__items: cnt++ return cnt |