练习9-6:冰激凌小店冰激凌小店是一种特殊的餐馆。编写一个名为冰激凌 的类,让它继承为完成练习9-1或练习9-4而编写的Restaurant( Restaurant)类。这两个版本的Restaurant(Restaurant)类都可以,挑 选你更喜欢的那个即可。添加一个名为flavors的属性,用于存储一个由名 种口味的冰激凌组成的列表。编写一个显示这些冰激凌的方法。创建一个 冰激凌实例,并调用这个方法。 答案
时间: 2025-06-27 11:08:04 浏览: 11
### IceCreamStand 子类的实现
为了创建 `IceCreamStand` 类作为 `Restaurant` 类的一个子类,可以利用继承机制扩展父类的功能。以下是具体的实现方式:
#### 1. 定义 Restaurant 父类
首先定义一个基础的 `Restaurant` 类,其中包括餐厅名称和菜系类型的属性。
```python
class Restaurant:
"""表示一家餐馆"""
def __init__(self, restaurant_name, cuisine_type):
"""初始化餐馆的名称和菜系类型"""
self.restaurant_name = restaurant_name
self.cuisine_type = cuisine_type
def describe_restaurant(self):
"""打印餐馆的描述信息"""
print(f"{self.restaurant_name} serves {self.cuisine_type}.")
def open_restaurant(self):
"""模拟餐馆开门营业"""
print(f"{self.restaurant_name} is now open!")
```
此部分代码展示了如何通过构造函数设置初始状态,并提供了两个方法分别用于描述餐馆和宣布其开放状态[^2]。
#### 2. 创建 IceCreamStand 子类
接着,基于上述 `Restaurant` 类构建一个新的子类 `IceCreamStand`,新增加了一个专门用来保存冰激凌口味列表的属性——`flavors`。
```python
class IceCreamStand(Restaurant):
"""表示冰淇淋店的独特之处"""
def __init__(self, restaurant_name, cuisine_type='ice cream'):
"""
初始化父类的属性,
并添加特定于冰淇淋店的新特性。
默认将 cuisine_type 设置为 'ice cream'
"""
super().__init__(restaurant_name, cuisine_type)
self.flavors = []
def display_flavors(self):
"""显示这家店铺提供的所有冰激凌口味"""
if not self.flavors:
print("No flavors available.")
else:
print("We offer the following ice cream flavors:")
for flavor in self.flavors:
print(f"- {flavor}")
```
这里重写了构造器以便默认指定菜品类型为 `'ice cream'`,同时也引入了另一个成员变量 `flavors` 来追踪可用的冰激凌种类[^3]。另外还提供了一种手段去列举所有的选项给顾客看。
#### 3. 使用示例
最后给出一段简单的脚本示范怎样实例化此类对象并操作它的功能。
```python
if __name__ == "__main__":
sweet_treats = IceCreamStand('Sweet Treats')
sweet_treats.describe_restaurant()
# 添加一些常见的冰激凌味道至列表中
sweet_treats.flavors.extend(['vanilla', 'chocolate', 'strawberry'])
# 展示菜单上的全部风味
sweet_treats.display_flavors()
```
当执行这段测试代码时,会先输出有关甜品屋的信息,随后列出其所供应的各种经典口味。
---
阅读全文
相关推荐
















