9-3 用户 : 创建一个名为User 的类, 其中包含属性first_name 和last_name , 还有用户简介通常会存储的其他几个属性。 在类User 中定义一个名
为describe_user() 的方法, 它打印用户信息摘要; 再定义一个名为greet_user() 的方法, 它向用户发出个性化的问候。
创建多个表示不同用户的实例, 并对每个实例都调用上述两个方法。
9-5 尝试登录次数 : 在为完成练习9-3而编写的User 类中, 添加一个名为login_attempts 的属性。 编写一个名为increment_login_attempts() 的方法,
它将属性login_attempts 的值加1。 再编写一个名为reset_login_attempts() 的方法, 它将属性login_attempts 的值重置为0。
根据User 类创建一个实例, 再调用方法increment_login_attempts() 多次。 打印属性login_attempts 的值, 确认它被正确地递增; 然后, 调用方
法reset_login_attempts() , 并再次打印属性login_attempts 的值, 确认它被重置为0。
9-7 管理员 : 管理员是一种特殊的用户。 编写一个名为Admin 的类, 让它继承你为完成练习9-3或练习9-5而编写的User 类。 添加一个名为privileges 的属性, 用
于存储一个由字符串(如”can add post” 、 “can delete post” 、 “can ban user” 等) 组成的列表。 编写一个名为show_privileges() 的方法, 它
显示管理员的权限。 创建一个Admin 实例, 并调用这个方法。
9-8 权限 : 编写一个名为Privileges 的类, 它只有一个属性——privileges , 其中存储了练习9-7 所说的字符串列表。 将方法show_privileges() 移到这
个类中。 在Admin 类中, 将一个Privileges 实例用作其属性。 创建一个Admin 实例, 并使用方法show_privileges() 来显示其权限。
实现上述题目的代码如下:
from enum import Enum
# 9-3 9-5 9-7
class Male(Enum):
MAN = 0
WOMAN = 1
class User:
def __init__(self, first_name, last_name, male):
self.__first_name = first_name
self.__last_name = last_name
self.__male = male
self.__login_attempts = 0
def describe_user(self):
print("User " + self.__first_name + ' ' + self.__last_name + "is a " + self.__male.name + '.')
def greet_user(self):
print("GOD BLESS YOU, " + self.__first_name.upper() + ' ' + self.__last_name.upper())
def increment_login_attempts(self):
self.__login_attempts += 1
def print_login_attempts(self):
print(self.__login_attempts)
def reset_login_attempts(self):
self.__login_attempts = 0
def get_fist_name(self):
return self.__first_name
class Admin(User):
def __init__(self, first_name, last_name, male):
super().__init__(first_name, last_name, male)
self.__privileges = ['can add post', 'can delete post', 'can ban user']
def show_privileges(self):
for i in range(0, len(self.__privileges)):
print("Admin " + super().get_fist_name() + " " + self.__privileges[i] + '.')
Simon = User(first_name='Peter', last_name='Simon', male=Male.MAN)
Andrew = User(first_name='Andrew', last_name='Simon', male=Male.MAN)
James = User(first_name='James', last_name='Zebedee', male=Male.MAN)
Simon.describe_user()
Andrew.describe_user()
James.describe_user()
Simon.greet_user()
Andrew.greet_user()
James.greet_user()
James.print_login_attempts()
James.increment_login_attempts()
James.print_login_attempts()
James.reset_login_attempts()
James.print_login_attempts()
Jesus = Admin(first_name='Jesus', last_name='Christ', male=Male.MAN)
Jesus.show_privileges()
输出如下:
User Peter Simonis a MAN.
User Andrew Simonis a MAN.
User James Zebedeeis a MAN.
GOD BLESS YOU, PETER SIMON
GOD BLESS YOU, ANDREW SIMON
GOD BLESS YOU, JAMES ZEBEDEE
0
1
0
Admin Jesus can add post.
Admin Jesus can delete post.
Admin Jesus can ban user.
Process finished with exit code 0
本文介绍了如何设计一个用户类,包括基本属性如姓名和性别,以及登录尝试次数的管理。进一步扩展到管理员类,实现了特定权限的展示。通过具体实例演示了各类方法的调用过程。

732

被折叠的 条评论
为什么被折叠?



