Python入门小程序(二)

学习了Python编程从入门到实践的第九章,本次的内容是类的创建、对象的实例化以及继承等内容。


1. 创建一个名为Restaurant的类,其方法__init__()设置两个属性:restaurant_namecuisine_type
class Restaurant():
    def __init__(self,restaurant_name,cuisine_type):
        self.restaurant_name=restaurant_name
        self.cuisine_type=cuisine_type
2. 创建一个名为describe_restaurant()的方法和一个名为open_restaurant()的方法,其中前者打印前述两项信息,而后者打印一条消息,指出餐馆正在营业。根据这个类创建一个名为restaurant的实例,分别打印其两个属性,再调用前述两个方法。
    def describe_restaurant(self):
        print('餐馆名:'+self.restaurant_name+', '+'菜系:'+self.cuisine_type)


    def open_restaurant(self):
        print(self.restaurant_name+' is opening!')
3. 根据你为完成练习9-1 而编写的类创建三个实例,并对每个实例调用方法describe_restaurant()
sun=Restaurant('Sun','Shanghai')
sun.describe_restaurant()
moon=Restaurant('Moon','Beijing')
moon.describe_restaurant()
star=Restaurant('Star','Guangzhou')
star.describe_restaurant()
4. 打印结果:

餐馆名:Sun, 菜系:Shanghai

餐馆名:Moon, 菜系:Beijing

餐馆名:Star, 菜系:Guangzhou

5. 添加一个名为set_number_served()的方法,它让你能够设置就餐人数。调用这个方法并向它传递一个值,然后再次打印这个值。
    ####修改describe_restaurant方法,增加显示就餐人数
    def describe_restaurant(self):
    print('餐馆名:'+self.restaurant_name+', '+'菜系:'+self.cuisine_type+', '+'就餐人数:'+str(self.number_served))

    def set_number_served(self,number):
    if number>=self.number_served:
        self.number_served=number
    else:
        print('无法更新')
6. 添加一个名为increment_number_served()的方法,它让你能够将就餐人数递增。调用这个方法并向它传递一个这样的值:你认为这家餐馆每天可能接待的就餐人数。
    def increment_number_served(self,number):
        self.number_served += number
7. 打印结果:

餐馆名:Sun, 菜系:Shanghai, 就餐人数:20

餐馆名:Sun, 菜系:Shanghai, 就餐人数:35

8. 继承父类创建子类,编写一个名为IceCreamStand的类,让它继承Restaurant的类。添加一个名为flavors 的属性,用于存储一个由各种口味的冰淇淋组成的列表。
class IceCreamStand(Restaurant):
    def __init__(self,restaurant_name,cuisine_type):
        super().__init__(restaurant_name,cuisine_type)
        self.flavors=['apple','watermelon','peach']
9. 编写一个显示这些各种口味冰淇淋的方法。
    def PrintFlavor(self):
        print('冰淇淋的口味有:'+str(self.flavors).strip('[').strip(']'))
10. 创建一个IceCreamStand 实例,并调用这个方法。
pink=IceCreamStand('Pink','Kunmming')
pink.describe_restaurant()
pink.PrintFlavor()
11. 实验结果:

餐馆名:Pink, 菜系:Kunmming, 就餐人数:0

冰淇淋的口味有:'apple', 'watermelon', 'peach'

12. 改进,编写一个名为Flavor 的类,它只有一个属性——flavorsList将方法PrintFlavor()移到这个类中,在IceCreamStand类中,将一个Flavor 实例用作其属性。
class IceCreamStand(Restaurant):
    def __init__(self,restaurant_name,cuisine_type):
        super().__init__(restaurant_name,cuisine_type)
        self.flavors=Flavors()

class Flavors():
    def __init__(self):
        self.flavorsList = ['apple', 'watermelon', 'peach']

    def PrintFlavor(self):
        print('冰淇淋的口味有:'+str(self.flavorsList).strip('[').strip(']'))
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,886评论 18 139
  • 第九章作业 9-1 餐馆 :创建一个名为Restaurant 的类,其方法 _ init _() 设置两个属性:r...
    Pessimist_34ad阅读 1,274评论 0 0
  • 类 面向对象编程是最有效的软件编写方法之一 在面向对象编程中,编写表示现实世界中的事物和情景的类,并基于这些类来创...
    焰火青春阅读 319评论 0 0
  • 2017年11月7日 晴 母亲把夕阳奉献给大地 她不知道红色在渐变 月亮会吞了一层又一层 骄傲占领天空 宣布黑夜和...
    鲜栗子阅读 170评论 0 5
  • 玉琢千金,兰桂质兮; 金龟佳婿,松柏形兮; 天成地合,良缘结兮; 吉时福地,大礼成兮; 高朋满座,为之贺兮; 宝马...
    屾山泉鸣阅读 383评论 5 7