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