9-6 冰淇淋小店

本文介绍了一个名为IceCreamStand的类的设计,该类继承自Restaurant类并新增了展示冰淇淋口味的功能。通过实例化IceCreamStand对象并调用其方法来展示不同口味的冰淇淋。

冰淇淋小店是一种特殊的餐馆。编写一个名为IceCreamStand 的类,让它继承你为完成练习9-1或练习9-4而编写的Restaurant 类。这两个版 本的Restaurant 类都可以,挑选你更喜欢的那个即可。添加一个名为flavors 的属性,用于存储一个由各种口味的冰淇淋组成的列表。编写一个显示这些冰淇淋 的方法。创建一个IceCreamStand 实例,并调用这个方法。

class Restaurant:
    def __init__(self, restaurant_name, cuisine_type):
        self.restaurant_name = restaurant_name
        self.cuisine_type = cuisine_type
        self.number_served = 0

    def describe_restaurant(self):
        print(self.restaurant_name.title() + " " + self.cuisine_type.title())

    def open_restaurant(self):
        print("The restaurant is open!")

    def number_sum(self, number):
        self.number_served = number


class IceCreamStand(Restaurant):
    def __init__(self, restaurant_name, cuisine_type):
        super().__init__(restaurant_name, cuisine_type)
        self.flavors = []

    def show_flavors(self):
        print("The flavors is shown:")
        for flavor in self.flavors:
            print("\t"+flavor.title())


restaurant1 = IceCreamStand('good', 'plain')
restaurant1.describe_restaurant()
restaurant1.open_restaurant()
restaurant1.number_sum(15)
print(restaurant1.number_served)
restaurant1.flavors = ['strawberry', 'apple', 'cream']
restaurant1.show_flavors()

 

### 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() ``` 当执行这段测试代码时,会先输出有关甜品屋的信息,随后列出其所供应的各种经典口味。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值