无法弄清楚为什么它在python中打印整个列表而不是列表元素

时间:2016-05-19 22:34:57

标签: python list

我对python和编程很新,过去一周我一直在学习本书,并尝试在关于类和继承的章节中学习。目标是制作餐馆类的冰淇淋子类,为其添加口味,然后打印口味。这是我的代码:

class Resturant():

    def __init__(self, name, cusine):
        self.name = name
        self.cusine = cusine
        self.number_served = 0

    def describe_resturant(self):
        print(self.name.title() + ", " + self.cusine.title())

    def resturant_open(self):
        print(self.name.title() + " is now open!")

    def serve_one(self):
        self.number_served+=1

class Ice_cream(Resturant):

    def __init__(self, name, cusine = 'ice cream'):
        super().__init__(name, cusine)
        self.flavors = []

    def add_flavors(self, *flavor):

        for f in flavor:
            self.flavors.append(flavor)
            self.flavors.sort()

    def print_flavors(self):
        for flavor in self.flavors:
            print(flavor)

cold_stone = Ice_cream('cold stone creamery')
cold_stone.describe_resturant()
cold_stone.resturant_open()
cold_stone.add_flavors('chocolate', 'vanilla', 'cake batter', 'coffee')
cold_stone.print_flavors()

我觉得这应该可行,因为我在前面的练习中编写了几乎完全相同的代码来打印列表项,但问题是它打印出整个列表四次,而不是每种味道都有它自己的路线,我无法为我的生活找出原因。

1 个答案:

答案 0 :(得分:0)

问题出在add_flavors

def add_flavors(self, *flavor):

    for f in flavor:
        self.flavors.append(flavor)
        self.flavors.sort()

您要为flavor中的每个项目附加整个flavor。添加f代替。或者您可以使用extend并跳过该循环:

def add_flavors(self, *flavor):
    self.flavors.extend(flavor)
    self.flavors.sort()