Python ';dict';对象没有属性';追加';

Python ';dict';对象没有属性';追加';,python,python-3.x,Python,Python 3.x,我正在学习一个关于为一个制作酒吧账单的例子设置一个类的教程,但我不明白为什么在向账单中添加新项目时出错 “dict”对象没有属性“append” 代码 class Bar_tab: #dictionary menu = { 'wine':5, 'beer':2, 'coke':3, 'chicken':9, 'dessert':7 } #set up the class d

我正在学习一个关于为一个制作酒吧账单的例子设置一个类的教程,但我不明白为什么在向账单中添加新项目时出错

“dict”对象没有属性“append” 代码

class Bar_tab:

    #dictionary
    menu = {
        'wine':5,
        'beer':2,
        'coke':3,
        'chicken':9,
        'dessert':7
    }

    #set up the class
    def __init__(self):
        #set up empty initial total and item list
        #customer will add items and total will add up
        #these variables will exist within the class
        self.total = 0
        self.items = {}

    #function for add items to tab
    def add(self,item):
        self.items.append(item)
        #add the value from menu dictionary for the 'item'
        self.total += self.menu[item]

    def pay_bill (self,tax,service):
        #tax will only exist within this function in the class
        tax=(tax/100) *self.total
        service=(service/100)*self.total
        total=self.total + tax + service

        for items in self.items:
            print(f'{item} ${self.menu[item]}')

        print(f'Total is ${total}')`

self.items.append(item)
行出现错误

self.item={}
self.items
初始化为空。字典没有
append()
方法,因为它的主要用途是将键与值关联起来。查看代码,目的是使
self.menu
成为dict(将菜单项映射到价格)和
self.items
成为(账单项),并且
list
确实有一个方法

要将
self.items
初始化为空列表,请将分配修改为:

self.item = []

append()。您还需要一个键和一个值,您只有
。再次检查你的教程
self.items
是一个字典。把它列为一个列表,它应该会工作(将
self.item={}
更改为
self.item=[]
)。这可能也是self中item的
。items:
这是否回答了您的问题?谢谢你的评论和回答!我将self.items编辑为一个列表,但得到了另一个错误,而不是AttributeError:“Bar_tab”对象没有属性“append”。我只更改了def uuu init uuuuuself(self):self.total=0 self.items=[]@noodlexpool请不要误会,但您需要知道StackOverflow并不能替代学习材料-我们并不是为您调试代码,但我们会帮助你解决与他人相关的具体问题。如果您愿意,您可以问一个单独的问题,但是请先尝试自己调试这个问题,或者学习Python教程。明白了。当完全相同的代码在youtube视频上运行,而不是在我这边运行时,我感到非常困惑。到时候我会自己想办法的。感谢您的回复@面条没问题,很乐意帮忙。如果这个问题解决了,请考虑答案。不知何故,它的工作后,我今天尝试!谢谢我想可能是因为当我之前尝试时,我在编辑代码后没有退出并重新启动终端,所以终端中代码的缓存没有改变。非常感谢。