实现不同用户权限之间的切换示例代码
时间: 2023-12-03 20:45:26 浏览: 32
以下是一个简单的示例代码,展示如何实现不同用户权限之间的切换:
```python
class User:
def __init__(self, name, role):
self.name = name
self.role = role
class Admin(User):
def __init__(self, name):
super().__init__(name, "admin")
class RegularUser(User):
def __init__(self, name):
super().__init__(name, "regular")
class System:
def __init__(self):
self.current_user = None
def login(self, user):
self.current_user = user
def logout(self):
self.current_user = None
def is_admin(self):
return self.current_user.role == "admin" if self.current_user else False
def do_admin_task(self):
if self.is_admin():
print("Doing admin task...")
else:
print("Permission denied.")
def do_regular_task(self):
print("Doing regular task...")
```
在上面的代码中,我们定义了 `User` 类和两个继承自 `User` 的子类 `Admin` 和 `RegularUser`。`User` 类中包含了用户的基本信息,而子类则继承了基本信息,并添加了角色信息。我们还定义了一个 `System` 类,表示整个系统。在这个类中,我们定义了 `login()` 和 `logout()` 方法,用于登录和注销用户。我们还定义了 `is_admin()` 方法,用于判断当前用户是否是管理员。最后,我们定义了两个方法 `do_admin_task()` 和 `do_regular_task()`,分别执行管理员和普通用户的任务。
下面是一个示例的使用过程:
```python
system = System()
admin_user = Admin("admin")
regular_user = RegularUser("user")
system.login(admin_user)
system.do_admin_task() # 输出 "Doing admin task..."
system.logout()
system.login(regular_user)
system.do_regular_task() # 输出 "Doing regular task..."
system.do_admin_task() # 输出 "Permission denied."
```
在上面的示例中,我们首先创建了一个 `System` 对象。然后,我们创建了一个管理员用户和一个普通用户,并使用 `login()` 方法登录了管理员用户。接着,我们调用了 `do_admin_task()` 方法,因为当前用户是管理员,所以输出了 "Doing admin task..."。接着,我们调用了 `logout()` 方法注销了当前用户。然后,我们使用 `login()` 方法登录了普通用户,并调用了 `do_regular_task()` 方法,输出了 "Doing regular task..."。最后,我们尝试调用 `do_admin_task()` 方法,但由于当前用户不是管理员,所以输出了 "Permission denied."。