9-7 管理员 :
管理员是一种特殊的用户。 编写一个名为Admin 的类, 让它继承你为完成练习 9-3或练习 9-5而编写的User 类。 添加一个名为privileges 的属性, 用
于存储一个由字符串(如" can add post" 、 " can delete post" 、 " can ban user" 等) 组成的列表。 编写一个名为show_privileges( ) 的方法, 它
显示管理员的权限。 创建一个Admin 实例, 并调用这个方法。
class User(): def __init__(self,first_name,last_name): self.first_name = first_name self.last_name = last_name def describe_user(self): print("\nFull name is " +self.first_name.title() + ‘ ‘ + self.last_name.title()) def greet_user(self): print("Hello," + self.first_name.title() + ‘ ‘ + self.last_name.title() + ‘!‘ ) class Admin(User): def __init__(self,first_name,last_name): super().__init__(first_name,last_name) self.privileges = [‘can add post‘,‘can delete post‘,‘can ban user‘] def show_privileges(self): print(self.first_name.title() + ‘ ‘ + self.last_name.title() + ‘ ‘ + self.privileges[0] + ‘.‘) admin_1 = Admin(‘wang‘,‘wei‘) admin_1.show_privileges()
9-8 权限 : 编写一个名为Privileges 的类, 它只有一个属性——privileges , 其中存储了练习9-7 所说的字符串列表。 将方法show_privileges( ) 移到这
个类中。 在Admin 类中, 将一个Privileges 实例用作其属性。 创建一个Admin 实例, 并使用方法show_privileges( ) 来显示其权限。
class User(): def __init__(self,first_name,last_name): self.first_name = first_name self.last_name = last_name def describe_user(self): print("\nFull name is " +self.first_name.title() + ‘ ‘ + self.last_name.title()) def greet_user(self): print("Hello," + self.first_name.title() + ‘ ‘ + self.last_name.title() + ‘!‘ ) class Privileges(): privileges = [‘can add post‘,‘can delete post‘,‘can ban user‘] def show_privileges(self): print(self.privileges) class Admin(User): def __init__(self,first_name,last_name): super().__init__(first_name,last_name) self.privilege = Privileges() admin_1 = Admin(‘wang‘,‘wei‘) admin_1.privilege.show_privileges()
9-9 电瓶升级 : 在本节最后一个electric_car.py版本中, 给Battery 类添加一个名为upgrade_battery( ) 的方法。 这个方法检查电瓶容量, 如果它不是85, 就将它
设置为85。 创建一辆电瓶容量为默认值的电动汽车, 调用方法get_range( ) , 然后对电瓶进行升级, 并再次调用get_range( ) 。 你会看到这辆汽车的续航里程增
加了。
class Car(): """一次模拟汽车的简单尝试""" def __init__(self,make,model,year): """初始化描述汽车的属性""" self.make = make self.model = model self.year = year self.odometer_reading = 0 def get_descriptive_name(self): """返回整洁的描述性信息""" long_time = str(self.year) + ‘ ‘ + self.make + ‘ ‘ +self.model return long_time.title() def read_odometer(self): """打印一条指出汽车里程的消息""" print("This car has " + str(self.odometer_reading) + " miles on it.") def update_odometer(self,mileage): """将里程表读数设置为指定的值 禁止将里程表读数往回调 """ if mileage >= self.odometer_reading: self.odometer_reading = mileage else: print("You can‘t roll back an odometer!") def increment_odometer(self,miles): """将里程表读数增加指定的值""" self.odometer_reading += miles def fill_gas_tank(self): print("come on!") class Battery(): """一次模拟汽车电瓶的简单尝试""" def __init__(self,battery_size=70): """初始化电瓶的属性""" self.battery_size = battery_size def describe_battery(self): """打印一条描述电瓶容量的消息""" print("This car has a " + str(self.battery_size) + "-kwh battery.") def get_range(self): """打印一条消息,指出电瓶的续航里程""" if self.battery_size == 70: range = 240 elif self.battery_size == 85: range = 270 message = "This car can go approximately " + str(range) message += "miles on a full charge." print(message) 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() def fill_gas_tank(self): print("This car doesn‘t need a gas tank!") my_tesla = ElectricCar(‘tesla‘,‘model s‘,2016) print(my_tesla.get_descriptive_name()) my_tesla.battery.describe_battery() my_tesla.battery.get_range() my_tesla.battery.upgrade_battery() my_tesla.battery.get_range()
原文:https://www.cnblogs.com/lvwugui/p/10909079.html