python编程从入门到实战类的定义_类的练习2——python编程从入门到实践

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()

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值