博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

二、Python开发---17、继承和多态的练习

Posted on 2019-10-15 19:33  兰智杰  阅读(736)  评论(0编辑  收藏  举报

1、冰其淋小店是一种特殊的餐馆,编写一个名为IceCreamStand的类,让它继承之前编写的Restaurant类,添加一个名为flavors的属性,用于存储一个由各种口味的冰淇淋组成的列表,编写一个显示这些冰淇淋的方法,创建一IceCreamStand实例,并调用这个方法

from  restaurant import Restaurant                                            #从restaurant.py中引入Restaurant类
class IceCreamStand(Restaurant):                                              #加载父类方法,并新增新的属性
    def __init__(self,restaurant_name,cuisine_type,flavors,number_served = 0):#添加的属性放在有赋值属性的前面
        super(IceCreamStand, self).__init__(restaurant_name,cuisine_type,number_served = 0)
        self.flavors=flavors
    def get_info(self):
        print('%s这家店的特色是%s,冰激凌的口味是%s'%(self.restaurant_name,self.cuisine_type,self.flavors))

queen=IceCreamStand('冰雪皇后','手工制作冰激凌',['草莓味','巧克力味','奶油味'])     #number_served有默认值,可以不传值
queen.get_info()#输出为 冰雪皇后这家店的特色是手工制作冰激凌,冰激凌的口味是['草莓味', '巧克力味', '奶油味']

2、管理员是一种特殊的用户,编写一个名为Admin的类,让它继承之前编写的User类,添加一个名为privileges的属性,用于存储一个由字符串(如“can add post”、“can delete post”、“can ban user”等)组成的列表,编写一个名为show_privileges()的方法,它显示管理员的权限,创建一个Admin实例,并调用这个方法

'''
    输出为  管理员susan的权限:
            can add post
            can delete post
            can ban user
'''
from  user import User                                      #从user中引入User类
class Admin(User):
    privileges=['can add post','can delete post','can ban user']
    def __init__(self,first_name,last_name,age,sex,phone=0,login_attempts=0):
        super(Admin, self).__init__(first_name,last_name,age,sex,phone=0,login_attempts=0)

    def show_privileges(self):
        print('管理员%s%s的权限:'%(self.first_name,self.last_name))
        for i in Admin.privileges:
            print(i)

admin01=Admin('su','san',20,'')
admin01.show_privileges()