9-7 管理员: 管理员是一种特殊的用户。编写一个名为Admin的类,并让它继承练习9-3或者9-5的User类。添加一个名为privileges的属性,用于存储一个由字符串(如"can add post"、"can delete post"、"can ban user"等)组成的列表。编写一个名为show_privileges()的方法,它显示管理员的权限。创建一个实例并调用这个方法。

class Admin(User):
def __init__(self, first_name, last_name, age, address):
"""初始化父类的属性,再初始化管理员特有的属性"""
super().__init__(first_name, last_name, age, address)
self.privileges = ['can add poet', 'can delete post', 'can ban user'] def show_privileges(self):
"""显示管理员的权限"""
print("\nThis is admin's privileges:")
for privilege in self.privileges:
print(privilege.title()) admin = Admin("beef", "mark", '', 'yunnan')
admin.greet_user()
admin.show_privileges()

9-8 权限: 编程一个名为Privileges的类,它只有一个属性——privileges,其中存储了9-7所说的字符串。将方法show_privileges()移到这个类中。在Admin类中,将一个privileges实例用作其属性。创建一个Admin实例,并使用show_privileges()来显其权限。

class Privileges:
def __init__(self):
"""初始化属性"""
self.privileges = ['can add poet', 'can delete post', 'can ban user'] def show_privileges(self):
"""显示管理员的权限"""
print("This is admin's privileges:")
for privilege in self.privileges:
print(privilege.title()) class Admin(User):
def __init__(self, first_name, last_name, age, address):
"""初始化父类的属性,再初始化管理员特有的属性"""
super().__init__(first_name, last_name, age, address)
self.privileges = Privileges() # 实例用作属性 admin = Admin("beef", "mark", '', 'yunnan')
admin.greet_user()
admin.privileges.show_privileges()

9-9 电瓶升级: 在electric_car.py版本中,给Battery类添加一个名为upgrade_battery()的方法。这个方法检查电瓶容量,如果它不是85,就将它设置为85。创建一辆电瓶容量为默认值的电动汽车,调用方法get_range(),然后对电瓶进行升级,并再次调用方法get_range(),查看汽车续航里程增加了。

class Car:
... class Battery:
... def upgrade_battery(self):
"""更新里程"""
if self.battery_size != 85:
self.battery_size = 85 class ElectricCar(Car):
"""电动汽车的独特之处""" def __init__(self, make, model, year):
"""初始化父类的属性"""
super().__init__(make, model, year)
self.battery = Battery() my_tesla = ElectricCar('tesla', 'model s', 2019)
print(my_tesla.get_descriptive_name())
my_tesla.battery.get_range()
my_tesla.battery.upgrade_battery()
my_tesla.battery.get_range()

9-10 导入Restaurant类: 将最新的Restaurant类存储在一个模块中。在另一个文件,导入Restaurant类,创建一个Restaurant实例,并调用Restaurant的一个方法,以确认import语句正确无误。

restaurant.py

class Restaurant:
def __init__(self, restaurant_name, cuisine_type):
"""初始化属性"""
self.restaurant_name = restaurant_name
self.cuisine_type = cuisine_type def describe_restaurant(self):
"""打印餐馆的名字和类型"""
print("Restaurant Name: " + self.restaurant_name.title())
print("Cuisine: " + self.cuisine_type.title())
from restaurant import Restaurant
restaurant = Restaurant("Love", 'icecream')
restaurant.describe_restaurant()

9-11 导入Admin类: 以9-8为基础,将User、Privileges和Admin类存储在一个模块中。再创建一个文件,在其中创建一个Admin实例并对其调用方法show_privileges(),以确认一切依然能够正确运行。

all_user.py

class User:
... class Privileges:
... class Admin(User):
...
import all_user
admin = all_user.Admin('shirley', 'yang', '', 'xian')
admin.privileges.show_privileges()

9-12 多个模块: 将User类存储在一个模块中,并将Privileges和Admin类存储在另一个模块中。再创建一个文件,在其中创建一个Admin实例并对其调用方法show_privileges(),以确认一切依然能够正确运行。

user.py

class User:
...
admin.py

from user import User

class Privileges:
... class Admin(User):
...
import admin
admin = admin.Admin('shirley', 'yang', '', 'xian')
admin.privileges.show_privileges()

类的练习2——python编程从入门到实践的更多相关文章

  1. 类的练习3——python编程从入门到实践

    9-13 使用OrderedDict: 在练习6-4中,使用一个标准字典来表示词汇表.使用OrderedDict类来重写这个程序,并确认输出的顺序与在字典中添加的键值对的顺序一致. from coll ...

  2. Python编程从入门到实践笔记——类

    Python编程从入门到实践笔记——类 #coding=gbk #Python编程从入门到实践笔记——类 #9.1创建和使用类 #1.创建Dog类 class Dog():#类名首字母大写 " ...

  3. Python编程从入门到实践

    Python编程从入门到实践1 起步2 变量和简单数据类型3 列表简介4 操作列表5 if语句6 字典7 用户输入和while循环8 函数9 类10 文件和异常11 测试代码12 武装飞船13 外星人 ...

  4. 《Python编程:从入门到实践》分享下载

    书籍信息 书名:<Python编程:从入门到实践> 原作名:Python Crash Course 作者: [美] 埃里克·马瑟斯 豆瓣评分:9.1分(2534人评价) 内容简介 本书是一 ...

  5. 《python编程从入门到实践》读书实践笔记(二)

    本文是<python编程从入门到实践>读书实践笔记11章的内容,主要包含测试,为体现测试的重要性,独立成文. 11 测试代码 写在前面的话,以下是我这些年开发中和测试相关的血泪史. 对于一 ...

  6. 《python编程从入门到实践》读书实践笔记(一)

    本文是<python编程从入门到实践>读书实践笔记1~10章的内容,主要包含安装.基础类型.函数.类.文件读写及异常的内容. 1 起步 1.1 搭建环境 1.1.1 Python 版本选择 ...

  7. Python编程从入门到实践笔记——异常和存储数据

    Python编程从入门到实践笔记——异常和存储数据 #coding=gbk #Python编程从入门到实践笔记——异常和存储数据 #10.3异常 #Python使用被称为异常的特殊对象来管理程序执行期 ...

  8. Python编程从入门到实践笔记——文件

    Python编程从入门到实践笔记——文件 #coding=gbk #Python编程从入门到实践笔记——文件 #10.1从文件中读取数据 #1.读取整个文件 file_name = 'pi_digit ...

  9. Python编程从入门到实践笔记——函数

    Python编程从入门到实践笔记——函数 #coding=gbk #Python编程从入门到实践笔记——函数 #8.1定义函数 def 函数名(形参): # [缩进]注释+函数体 #1.向函数传递信息 ...

随机推荐

  1. 【NOI2002】荒岛野人(信息学奥赛一本通 1637)(洛谷 2421)

    题目描述 克里特岛以野人群居而著称.岛上有排列成环行的M个山洞.这些山洞顺时针编号为1,2,…,M.岛上住着N个野人,一开始依次住在山洞C1,C2,…,CN中,以后每年,第i个野人会沿顺时针向前走Pi ...

  2. Goldbach’s Conjecture(信息学奥赛一本通 1622)

    [题目描述] 原题来自:Ulm Local,题面详见:POJ 2262 哥德巴赫猜想:任何大于 44 的偶数都可以拆成两个奇素数之和. 比如: 8=3+5 20=3+17=7+13 42=5+37=1 ...

  3. 第09组 Alpha事后诸葛亮

    组长博客链接 组长博客 参考邹欣老师的问题模板进行总结思考 设想和目标(2分) 1.我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 解决的问题 我们软件初期旨在解决 ...

  4. mac 使用tesseract识别图片中的中文

    安装 tesseractbrew install tesseract 加入环境变量export TESSDATA_PREFIX=/usr/local/Cellar/tesseract/4.1.0/sh ...

  5. hdu2094产生冠军[STL set]

    目录 题目地址 题干 代码和解释 参考 题目地址 hdu2094 题干 代码和解释 题意可以这样理解:一个人只要没输过就可以是冠军,如果没输过的人恰为一位,那就认他为冠军,若少于或多于一位,则判定没有 ...

  6. VLC搭建RTSP服务器

    实时流协议 RTSP 是在实时传输协议的基础上工作的,主要实现对多媒体播放的控制.用户对多媒体信息的播放.暂停.前进和后退等功能就是通过对实时数据流的控制来实现的. 而这些播放控制功能的实现不仅需要多 ...

  7. JCR分区 | 中科院SCI期刊分区表

    LetPub查询系统,非常方便,分区影响因子都可以查询,还有投稿经验可以参考. SCI全称是Science Citation Index(科学引文索引) 科睿唯安JCR分区(Journal Citat ...

  8. MySQL函数find_in_set介绍

    MySQL函数find_in_set介绍 数据库中的某个字段我十以字符存储的,同时又以","隔开的.如果想要查询这个字段中包含某个字符串该怎么查询?使用like?感觉不妥,如果使用 ...

  9. TOKEN验证防止CSRF攻击的原理

    TOKEN验证防止CSRF攻击的原理.CSRF中文名是跨站请求伪造攻击,黑客可以通过CSRF攻击来伪造我们的身份,从而进行不法的活动.比如说是以我们的身份进行转账,发送邮件等操作. 要想做到预防CSR ...

  10. 公司-IT-Yahoo:百科

    ylbtech-公司-IT-Yahoo:百科 雅虎(英文名称:Yahoo!,NASDAQ:YHOO)是美国著名的互联网门户网站,也是20世纪末互联网奇迹的创造者之一.其服务包括搜索引擎.电邮.新闻等, ...