9-7 管理員: 管理員是一種特殊的用戶。編寫一個名為Admin的類,並讓它繼承練習9-3或者9-5的User類。添加一個名為privileges的屬性,用於存儲一個由字元串(如"can add post"、"can delete post"、"can ban user"等)組成的列表。編寫一個名為 ...
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", '34', '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", '34', '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', '18', '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', '18', 'xian') admin.privileges.show_privileges()