62 lines
2.3 KiB
Python
62 lines
2.3 KiB
Python
# Exercise 9-8 Privileges
|
|
# Learning Objective: Compostition
|
|
|
|
class Users:
|
|
def __init__(self, first_name, last_name, dob, state, hair_color):
|
|
"""Initialize User Profile variables"""
|
|
self.first_name = first_name
|
|
self.last_name = last_name
|
|
self.dob = dob
|
|
self.state = state
|
|
self.hair_color = hair_color
|
|
self.login_attempts = 0
|
|
|
|
def describe_user(self):
|
|
"""Prints descriptions of user based on inputs"""
|
|
print(f"{self.first_name} {self.last_name} was born on {self.dob}, they live in {self.state} and they have {self.hair_color}")
|
|
|
|
def greet_user(self):
|
|
"""Prints personalized greeting to user specified"""
|
|
print(f"Welcome to this python program, {self.first_name} {self.last_name}!")
|
|
|
|
def increment_login_attempts(self):
|
|
"""Increments Login Attempts by one"""
|
|
self.login_attempts += 1
|
|
|
|
def reset_login_attempts(self):
|
|
"""Resets login attempts to zero"""
|
|
self.login_attempts = 0
|
|
|
|
class Privileges:
|
|
def __init__(self, privileges=[]):
|
|
"""Create separate class for privileges """
|
|
self.privileges = privileges
|
|
|
|
def show_privileges(self):
|
|
""" Print Privileges list """
|
|
print(f"This user has the following privileges:\n")
|
|
if self.privileges:
|
|
for privilege in self.privileges:
|
|
print(f" - {privilege}")
|
|
else:
|
|
print(" - This user has no privileges.")
|
|
|
|
class Admin(Users):
|
|
def __init__(self, first_name, last_name, dob, state, hair_color):
|
|
""" Initialize Users the add sepeicifc Admin attributes/methods """
|
|
super().__init__(first_name, last_name, dob, state, hair_color)
|
|
self.privileges = Privileges()
|
|
|
|
super_stan = Admin("Stan", "Gerk", "07/02/1954", "GA", "Blonde")
|
|
super_stan.describe_user()
|
|
|
|
super_stan.privileges.show_privileges()
|
|
|
|
print("Adding privileges...")
|
|
super_stan_privileges = ["can add post", "can delete post", "can ban user", "can unban user", "can create user", "can delete user", "can modify site contents"]
|
|
|
|
super_stan.privileges.privileges = super_stan_privileges
|
|
|
|
super_stan.privileges.show_privileges()
|
|
|
|
### Needed tremendous helps with this one. Much of this code is taken from Author's solution here: https://ehmatthes.github.io/pcc_3e/solutions/chapter_9/#9-8-privileges |